Просмотр исходного кода

issue #112 - add idle handlers to ODIR

Mike 1 год назад
Родитель
Сommit
589d58fd99
3 измененных файлов с 15 добавлено и 2 удалено
  1. 5 0
      cmd/server/factory.go
  2. 8 2
      foodgroup/oservice.go
  3. 2 0
      server/oscar/handler/routes.go

+ 5 - 0
cmd/server/factory.go

@@ -466,11 +466,16 @@ func ODir(deps Container) oscar.BOSServer {
 		nil,
 		deps.rateLimitClasses,
 	)
+
 	oServiceService := foodgroup.NewOServiceServiceForODir(
 		deps.cfg,
 		logger,
 		deps.rateLimitClasses,
 		deps.snacRateLimits,
+		deps.inMemorySessionManager,
+		deps.sqLiteUserStore,
+		deps.inMemorySessionManager,
+		deps.sqLiteUserStore,
 	)
 	oDirService := foodgroup.NewODirService(logger, deps.sqLiteUserStore)
 

+ 8 - 2
foodgroup/oservice.go

@@ -226,6 +226,7 @@ func (s OServiceService) SetUserInfoFields(ctx context.Context, sess *state.Sess
 // Set session idle time to the value of bodyIn.IdleTime. Return a user arrival
 // message to all users who have this user on their buddy list.
 func (s OServiceService) IdleNotification(ctx context.Context, sess *state.Session, bodyIn wire.SNAC_0x01_0x11_OServiceIdleNotification) error {
+	fmt.Printf("\n\ngot idle notification!\n\n")
 	if bodyIn.IdleTime == 0 {
 		sess.UnsetIdle()
 	} else {
@@ -791,10 +792,15 @@ func NewOServiceServiceForODir(
 	logger *slog.Logger,
 	rateLimitClasses wire.RateLimitClasses,
 	snacRateLimits wire.SNACRateLimits,
+	messageRelayer MessageRelayer,
+	relationshipFetcher RelationshipFetcher,
+	sessionRetriever SessionRetriever,
+	buddyIconManager BuddyIconManager,
 ) *OServiceService {
 	return &OServiceService{
-		cfg:    cfg,
-		logger: logger,
+		buddyBroadcaster: newBuddyNotifier(buddyIconManager, relationshipFetcher, messageRelayer, sessionRetriever),
+		cfg:              cfg,
+		logger:           logger,
 		foodGroups: []uint16{
 			wire.ODir,
 			wire.OService,

+ 2 - 0
server/oscar/handler/routes.go

@@ -195,6 +195,8 @@ func NewODirRouter(h Handlers) oscar.Router {
 
 	router.Register(wire.OService, wire.OServiceClientOnline, h.ClientOnline)
 	router.Register(wire.OService, wire.OServiceClientVersions, h.OServiceHandler.ClientVersions)
+	router.Register(wire.OService, wire.OServiceIdleNotification, h.OServiceHandler.IdleNotification)
+	router.Register(wire.OService, wire.OServiceNoop, h.OServiceHandler.Noop)
 	router.Register(wire.OService, wire.OServiceRateParamsQuery, h.OServiceHandler.RateParamsQuery)
 	router.Register(wire.OService, wire.OServiceRateParamsSubAdd, h.OServiceHandler.RateParamsSubAdd)
 	router.Register(wire.OService, wire.OServiceSetPrivacyFlags, h.OServiceHandler.SetPrivacyFlags)