Exemple #1
0
        private IDisposable BindLoading(
            IObservable <MessageLoadRequestedArgs> loadRequests,
            Target target,
            IMessageLoader messageLoader,
            IMessageModelFactory messageModelFactory)
        {
            switch (target)
            {
            case Chat chat:
                return(BindChatLoading(
                           loadRequests,
                           chat,
                           messageLoader,
                           messageModelFactory));

            case Aggregate aggregate:
                return(BindAggregateLoading(
                           loadRequests,
                           aggregate,
                           messageLoader,
                           messageModelFactory));
            }

            return(Disposable.Empty);
        }
Exemple #2
0
 protected ClientWriter(IRestClient restClient, IMessageLoader <T> loader,
                        IClientStageRepository clientStageRepository)
 {
     _restClient            = restClient;
     _loader                = loader;
     _clientStageRepository = clientStageRepository;
 }
Exemple #3
0
 public MessageManager(
     IMessageLoader messageLoader,
     IMessageModelFactory messageModelFactory)
 {
     _messageLoader       = messageLoader;
     _messageModelFactory = messageModelFactory;
 }
Exemple #4
0
        public ExplorerProvider(
            Target target,
            IExplorerTrigger trigger,
            IMessageLoader messageLoader,
            IMessageModelFactory messageModelFactory,
            IAvatarManager avatarManager
            )
        {
            _items = new SourceList <ItemModel>();

            var loadRequests = Observable.FromEventPattern <MessageLoadRequestedArgs>(
                h => trigger.MessageLoadRequested += h,
                h => trigger.MessageLoadRequested -= h)
                               .Select(args => args.EventArgs);

            BindLoading(loadRequests, target, messageLoader, messageModelFactory)
            .DisposeWith(_serviceDisposable);

            var visibleRangeChanges = Observable.FromEventPattern <VisibleRangeNotifiedArgs>(
                h => trigger.VisibleRangeNotified += h,
                h => trigger.VisibleRangeNotified -= h)
                                      .Select(args => args.EventArgs);

            BindAvatarLoading(visibleRangeChanges, avatarManager)
            .DisposeWith(_serviceDisposable);

            BindMediaLoading(visibleRangeChanges)
            .DisposeWith(_serviceDisposable);
        }
Exemple #5
0
 private IDisposable BindAggregateLoading(
     IObservable <MessageLoadRequestedArgs> loadRequests,
     Aggregate aggregate,
     IMessageLoader messageLoader,
     IMessageModelFactory messageModelFactory)
 {
     throw new NotImplementedException();
 }
Exemple #6
0
 public InitMessageLoader(
     IChatLoader chatLoader,
     IMessageLoader messageLoader,
     IMessageModelFactory messageModelFactory)
 {
     _chatLoader          = chatLoader;
     _messageLoader       = messageLoader;
     _messageModelFactory = messageModelFactory;
 }
Exemple #7
0
            public TestE()
            {
                _loader = new MessageLoader();

                azureStorageQueue = new AzureStorageQueue <string>(_loader);

                azureStorageQueue.TotalMessages = numberOfMessages;

                Run().Wait();
            }
Exemple #8
0
 /// <summary>
 /// Creates a message handler
 /// </summary>
 /// <param name="channel"> name of a channel from that a message is received and processed</param>
 /// <param name="messageValidator">validator checking each message received whether it is out of order based on its sequence number</param>
 /// <param name="messageLoader">provides capability to directly get messages stored in Redis server</param>
 /// <param name="messageHandler">a handler responsible for processing a message received</param>
 /// <param name="log">logger tracing internal activity of this subscriber</param>
 public MessageProcessor(
     string channel,
     IMessageValidator messageValidator,
     IMessageLoader messageLoader,
     IMessageHandler messageHandler,
     ILogger <MessageProcessor> log = default)
 {
     Channel           = channel;
     _messageValidator = messageValidator;
     _messageLoader    = messageLoader;
     _messageHandler   = messageHandler;
     _log = log ?? NullLogger <MessageProcessor> .Instance;
 }
Exemple #9
0
        private IObservable <Message> LoadPrevMessages(Chat chat, IMessageLoader messageLoader)
        {
            var fromMessageId = chat.ChatData.LastReadInboxMessageId;

            if (_items.Count > 0)
            {
                var messageModel = (MessageModel)_items.Items.LastOrDefault(i => i is MessageModel);
                if (messageModel != null)
                {
                    fromMessageId = messageModel.Message.MessageData.Id;
                }
            }

            return(messageLoader.LoadPrevMessages(chat, fromMessageId, 20));
        }
Exemple #10
0
        public AzureStorageQueue(IMessageLoader loader)
        {
            _loader = loader;

            try
            {
                CreateQueueAsync(queueName).Wait();
            }
            catch
            {
                Console.WriteLine("If you are running with the default configuration please make sure you have started the storage emulator.  ess the Windows key and type Azure Storage to select and run it from the list of applications - then restart the sample.");
                Console.ReadLine();
                throw;
            }
        }
Exemple #11
0
        private IDisposable BindChatLoading(
            IObservable <MessageLoadRequestedArgs> loadRequests,
            Chat chat,
            IMessageLoader messageLoader,
            IMessageModelFactory messageModelFactory)
        {
            return(loadRequests
                   .ObserveOn(TaskPoolScheduler.Default)
                   .SelectMany(signal =>
            {
                var messages = signal.Direction == LoadDirection.Next
                        ? LoadNextMessages(chat, messageLoader)
                        : LoadPrevMessages(chat, messageLoader);

                return messages.Aggregate(new List <Message>(), (list, m) =>
                {
                    list.Add(m);
                    return list;
                })
                .Select(list => new
                {
                    Direction = signal.Direction,
                    Messages = list
                });
            })
                   .Subscribe(data =>
            {
                var direction = data.Direction;
                var models = data.Messages
                             .Select(messageModelFactory.CreateMessage)
                             .Reverse()
                             .ToList();

                switch (direction)
                {
                case LoadDirection.Prev:
                    _items.InsertRange(models, 0);
                    break;

                case LoadDirection.Next:
                    _items.AddRange(models);
                    break;
                }
            }));
        }
Exemple #12
0
        public static IDisposable BindPromoted(
            this HomeModel model,
            IChatLoader chatLoader,
            IMessageLoader messageLoader,
            IMessageModelFactory messageModelFactory)
        {
            model.PromotedMessages = new ObservableCollectionExtended <MessageModel>();

            return(chatLoader.LoadPromo()
                   .SelectSeq(chat =>
            {
                return messageLoader.LoadNextMessages(chat, 0, 10);
            })
                   .Accept(message =>
            {
                var messageModel = messageModelFactory.CreateMessage(message);
                model.PromotedMessages.Add(messageModel);
            }));
        }
        public MSMQ(IMessageLoader loader)
        {
            _loader = loader;

            if (!MessageQueue.Exists(queueName))
            {
                MessageQueue.Create(queueName);
            }
            var formatter = new XmlMessageFormatter(new Type[] { typeof(T) });

            sendQueue = new MessageQueue(queueName)
            {
                Formatter = formatter
            };
            receiveQueue = new MessageQueue(queueName)
            {
                Formatter = formatter
            };
        }
 public AzureServiceBus(IMessageLoader loader)
 {
     _loader     = loader;
     queueClient = new QueueClient(connectionString, queueName);
 }
Exemple #15
0
 /// <summary>
 /// Initialize this variable for own datasource load message description.
 /// </summary>
 public static void RegisterMessageLoader(IMessageLoader messageLoader)
 {
     m_messageLoader = messageLoader;
 }
Exemple #16
0
 /// <summary>
 /// Release message loader.
 /// </summary>
 public static void UnregisterMessageLoader()
 {
     m_messageLoader = null;
 }
 public TestD()
 {
     _loader = new MessageLoader();
     factory = MessagingFactory.CreateFromConnectionString(@"Endpoint=sb://fcgtest.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=Bvts8dhzcb7mbKj4PURSD6UPf3eO7hfV7qDWlC4MWyA=");
 }
Exemple #18
0
 public MessageSendingMachine(IClient <string> messageSender)
 {
     this.messageSender = messageSender;
     messageloader      = new MessageLoader();
 }