Esempio n. 1
0
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);

            app.UseFileServer(new FileServerOptions()
            {
                RequestPath = new PathString("/Images")
            });

            var messages = new ProcessedMessagesQueue(ConnectionString, OnMessageArrived);
        }
        public MessagingController(
            IGlobalSessionsRegistry sessionsRegistry,
            IGroupChatsRepository groupChatsRepository,
            IDevicesRepository devicesRepository,
            ProcessedMessagesQueue processedMessagesQueue,
            ISessionsServer server,
            IUndeliveredEventsRepository <Message> undeliveredMessagesRepository,
            IUndeliveredEventsRepository <DeliveryNotification> undeliveredDeliveryNotificationsRepository,
            IUndeliveredEventsRepository <SeenNotification> undeliveredSeenNotificationsRepository,
            IInternalMessageBus internalMessageBus)
        {
            _groupChatsRepository   = groupChatsRepository;
            _devicesRepository      = devicesRepository;
            _processedMessagesQueue = processedMessagesQueue;

            _messageEventManager = new ReliableEventManager <Message, IncomingMessage>(server,
                                                                                       undeliveredMessagesRepository, sessionsRegistry, internalMessageBus, MessageDtoConverter, OnMessageProcessed);
            RegisterPulsable(_messageEventManager);

            _deliveryStatusEventManager = new ReliableEventManager <DeliveryNotification, ServerClient.Entities.Ws.Events.DeliveryNotification>(server,
                                                                                                                                                undeliveredDeliveryNotificationsRepository, sessionsRegistry, internalMessageBus,
                                                                                                                                                n => new ServerClient.Entities.Ws.Events.DeliveryNotification {
                MessageToken = n.MessageToken, EventId = n.EventId, DeliveredAt = n.CreatedAt
            });
            RegisterPulsable(_deliveryStatusEventManager);

            _seenStatusEventManager = new ReliableEventManager <SeenNotification, ServerClient.Entities.Ws.Events.SeenNotification>(server,
                                                                                                                                    undeliveredSeenNotificationsRepository, sessionsRegistry, internalMessageBus,
                                                                                                                                    n => new ServerClient.Entities.Ws.Events.SeenNotification {
                MessageToken = n.MessageToken, EventId = n.EventId, SeenAt = n.CreatedAt
            });
            RegisterPulsable(_seenStatusEventManager);

            _isTypingEventManager = new InstantEventManager <IsTypingEvent, IsTypingNotification>(server,
                                                                                                  sessionsRegistry, internalMessageBus, n => new IsTypingNotification {
                IsTyping = n.IsTyping, SenderUserId = n.SenderUserId, GroupId = n.GroupId
            });
            RegisterPulsable(_isTypingEventManager);
        }