Пример #1
0
 public void Invoke(IMessageSender sender, Message message)
 {
     foreach(var listener in Listeners)
     {
         listener.Value.Invoke(listener.Key, sender, message);
     }
 }
Пример #2
0
        static MessageService()
        {
            if (!MessagingEnabled) return;

            var unitySection = ConfigurationManager.GetSection("unity");
            if (unitySection == null)
            {
                log.Error("Required unity configuration for Message Sender");
                return;
            }

            try
            {
                var unity = new UnityContainer().LoadConfiguration(unityContainerName);
                if (unity.IsRegistered<IMessageSender>())
                {
                    sender = unity.Resolve<IMessageSender>();
                }
                else
                {
                    log.Error("Required unity configuration for Message Sender");
                }
            }
            catch(Exception ex)
            {
                log.Error("Error while resolving Message Sender: " + ex);
            }
        }
 public ProtocolChoicePromptHandler(
     IMessageSender messageSender,
     ConsoleService consoleService)
 {
     this.messageSender = messageSender;
     this.consoleService = consoleService;
 }
Пример #4
0
 public Program(IMessageSender sender, IStoreEvents store, NuclearStorage storage)
 {
     this.sender = new SenderDecorator(sender);
     this.store = store;
     this.storage = storage;
     reader = new ConsoleReader();
 }
Пример #5
0
 public InteractionProcessor(IMessageSender sender, LifelineViewport viewport, NuclearStorage storage)
 {
     _sender = sender;
     _viewport = viewport;
     _storage = storage;
     CurrentStoryId = new StoryId(Guid.Empty);
 }
        public EventStoreBusPublisher(IMessageSender sender, IPendingEventsQueue queue)
        {
            this.sender = sender;
            this.queue = queue;

            this.enqueuedKeys = new BlockingCollection<string>();
        }
Пример #7
0
 public void CreateBus()
 {
     m_Sender = Substitute.For<IMessageSender>();
     m_Receiver = Substitute.For<IMessageReceiver>();
     m_Bus = new MessageBus(m_Sender,
                            m_Receiver);
 }
		private void SendAll(IEnumerable messages, IMessageSender sender)
		{
			IEnumerator iterator = messages.GetEnumerator();
			while (iterator.MoveNext())
			{
				sender.Send(iterator.Current);
			}
		}
Пример #9
0
 public TransportClient(IMessageSender messageSender, IMessageListener messageListener, ILogger logger, IServiceExecutor serviceExecutor)
 {
     _messageSender = messageSender;
     _messageListener = messageListener;
     _logger = logger;
     _serviceExecutor = serviceExecutor;
     messageListener.Received += MessageListener_Received;
 }
Пример #10
0
 public HttpMessageWriter(IMessageSender messageSender, string baseUrl, OutputPort light, Watchdog[] resetWatchdogsOnSend)
 {
     _messageSender = messageSender;
     _baseUrl = baseUrl;
     _light = light;
     _resetWatchdogsOnSend = resetWatchdogsOnSend ?? new Watchdog[] {};
     StartThread();
 }
 public IncomingMessageProcessor(IRepository repository, IMessageSender messageSender,
                                 ICaseRepository caseRepository, IEmailSender emailSender)
 {
     _repository = repository;
     _messageSender = messageSender;
     _caseRepository = caseRepository;
     _emailSender = emailSender;
 }
Пример #12
0
 public TransportClient(IMessageSender messageSender, IMessageListener messageListener, ILogger logger, ISerializer<byte[]> serializer)
 {
     _messageSender = messageSender;
     _messageListener = messageListener;
     _logger = logger;
     _serializer = serializer;
     messageListener.Received += MessageListener_Received;
 }
 public IMessageSender GetSender(IMessageSender[] senders)
 {
     lock (_sendersLock)
     {
         _currentSender = ++_currentSender % senders.Length;
         return senders[_currentSender];
     }
 }
Пример #14
0
 public EventBus(IMessageSender messageSender,
     IRoutingKeyProvider routingKeyProvider,
     IMetadataProvider metadataProvider)
 {
     this.messageSender = messageSender;
     this.routingKeyProvider = routingKeyProvider;
     this.metadataProvider = metadataProvider;
     this.logger = LogManager.GetLogger("ThinkNet");
 }
        public override void Given()
        {
            messageSender = Moq.Mock<IMessageSender>();

            var messageMap = Moq.Mock<IMessageMap_v2>();
            messageMap.SetupGet(x => x.MessageType).Returns(typeof(ChangeOrderAttributes));

            viewModel = new MessageMapViewModel(messageSender, messageMap);
        }
Пример #16
0
        //--//
        public CoreTest( ILogger logger )
        {
            if( logger == null )
            {
                throw new ArgumentException( "Cannot run tests without logging" );
            }

            _completed = new AutoResetEvent( false );

            _logger = logger;

            _rand = new Random( );
            _totalMessagesSent = 0;
            _totalMessagesToSend = 0;
            _gatewayQueue = new GatewayQueue<QueuedItem>( );

            #if MOCK_SENDER
            _sender = new MockSender<SensorDataContract>(this);
            #else

            IotHubConfig iotHubConfig = Loader.GetIotHubConfig( );

            _sender = new MessageSender<SensorDataContract>(iotHubConfig.IotHubConnectionString, _logger);
            #endif

            _batchSenderThread = new BatchSenderThread<QueuedItem, SensorDataContract>(
                _gatewayQueue,
                _sender,
                dataTransform : null,
                serializedData: m => ( m == null ) ? null : m.JsonData,
                logger        : _logger
                );

            string gatewayIPAddressString = string.Empty;
            IPAddressHelper.GetIPAddressString( ref gatewayIPAddressString );

            DataTransformsConfig dataTransformsConfig = Loader.GetDataTransformsConfig( );
            if( dataTransformsConfig.AttachIP || dataTransformsConfig.AttachTime )
            {
                Func<string, SensorDataContract> transform = ( m => DataTransforms.SensorDataContractFromString( m, _logger ) );

                if( dataTransformsConfig.AttachTime )
                {
                    var transformPrev = transform;
                    transform = ( m => DataTransforms.AddTimeCreated( transformPrev( m ) ) );
                }

                if( dataTransformsConfig.AttachTime )
                {
                    var transformPrev = transform;
                    transform = ( m => DataTransforms.AddIPToLocation( transformPrev( m ), gatewayIPAddressString ) );
                }

                _gatewayTransform = ( m => DataTransforms.QueuedItemFromSensorDataContract( transform( m ) ) );
            }
        }
        public ProxyService(IHmrcDataManipulator dataManipulator, IConfigurationRepository configRepository, IMessageSender messageSender)
        {
            if (dataManipulator == null) throw new ArgumentNullException(nameof(dataManipulator));
            if (configRepository == null) throw new ArgumentNullException(nameof(configRepository));
            if (messageSender == null) throw new ArgumentNullException(nameof(messageSender));

            this.dataManipulator = dataManipulator;
            this.configRepository = configRepository;
            this.messageSender = messageSender;
        }
Пример #18
0
        public ServiceBus(IServiceBusConfiguration configuration)
        {
            Guard.AgainstNull(configuration, "configuration");

            Configuration = configuration;

            Events = new ServiceBusEvents();

            _messageSender = new MessageSender(this);
        }
Пример #19
0
 public static void RegisterView(IMessageSender viewModel)
 {
     Type viewModelType = viewModel.GetType();
     if (_views.ContainsKey(viewModelType))
     {
         IMessageListener listener = Activator.CreateInstance(_views[viewModelType]) as IMessageListener;
         listener.Initialize(viewModel);
         _registeredViews.Add(listener);
     }
 }
Пример #20
0
        /// <summary>
        /// Azures the index builder.
        /// </summary>
        /// <param name="repository">The repository.</param>
        /// <param name="searchProvider">The search provider.</param>
        /// <param name="messageSender">The message sender.</param>
        /// <param name="consumerFactory">The consumer factory.</param>
        /// <param name="observer">The observer.</param>
        /// <param name="queueReader">The queue reader.</param>
        /// <param name="indexBuilders">The index builders.</param>
        public SearchIndexController(IBuildSettingsRepository repository, ISearchProvider searchProvider, IMessageSender messageSender, IConsumerFactory consumerFactory, ISystemObserver observer, IQueueReader queueReader, ISearchIndexBuilder[] indexBuilders)
		{
			_repository = repository;
			_messageSender = messageSender;
			_observer = observer;
			_queueReader = queueReader;
			_consumerFactory = consumerFactory;
            _searchProvider = searchProvider;
            _indexBuilders = indexBuilders;
		}
Пример #21
0
 public CommandBus(IMessageSender messageSender,
     ICommandResultManager commandResultManager,
     IRoutingKeyProvider routingKeyProvider,
     IMetadataProvider metadataProvider)
 {
     this.messageSender = messageSender;
     this.commandResultManager = commandResultManager;
     this.routingKeyProvider = routingKeyProvider;
     this.metadataProvider = metadataProvider;
     this.logger = LogManager.GetLogger("ThinkNet");
 }
Пример #22
0
 public BusBootstrapper(IAssemblyScanner assemblyScanner, ZmqTransportConfiguration zmqTransportConfiguration, IBusBootstrapperConfiguration bootstrapperConfiguration,
     IMessageSender messageSender, IPeerManager peerManager, ISubscriptionManager subscriptionManager, IPeerConfiguration peerConfiguration)
 {
     _assemblyScanner = assemblyScanner;
     _zmqTransportConfiguration = zmqTransportConfiguration;
     _bootstrapperConfiguration = bootstrapperConfiguration;
     _messageSender = messageSender;
     _peerManager = peerManager;
     _subscriptionManager = subscriptionManager;
     _peerConfiguration = peerConfiguration;
 }
Пример #23
0
        // Snippet from a class that uses IMessageSender
        public void SendMessage(IMessageSender sender)
        {
            // Is this right?
            sender.SendMessage("the message body", "PARTNER001", "PARTNER002");

            // or this?
            sender.SendMessage("PARTNER001", "the message body", "PARTNER002");

            // or this?
            sender.SendMessage("PARTNER001", "PARTNER002", "the message body");
        }
Пример #24
0
        /// <summary>
        /// 执行。
        /// </summary>
        /// <param name="sender">消息发送者。</param>
        /// <param name="message">调用消息。</param>
        public async Task ExecuteAsync(IMessageSender sender, TransportMessage message)
        {
            if (_logger.IsEnabled(LogLevel.Information))
                _logger.LogInformation("接收到消息。");

            if (!message.IsInvokeMessage())
                return;

            RemoteInvokeMessage remoteInvokeMessage;
            try
            {
                remoteInvokeMessage = message.GetContent<RemoteInvokeMessage>();
            }
            catch (Exception exception)
            {
                _logger.LogError("将接收到的消息反序列化成 TransportMessage<RemoteInvokeMessage> 时发送了错误。", exception);
                return;
            }

            var entry = _serviceEntryLocate.Locate(remoteInvokeMessage);

            if (entry == null)
            {
                if (_logger.IsEnabled(LogLevel.Error))
                    _logger.LogError($"根据服务Id:{remoteInvokeMessage.ServiceId},找不到服务条目。");
                return;
            }

            if (_logger.IsEnabled(LogLevel.Debug))
                _logger.LogDebug("准备执行本地逻辑。");

            var resultMessage = new RemoteInvokeResultMessage();

            //是否需要等待执行。
            if (entry.Descriptor.WaitExecution())
            {
                //执行本地代码。
                await LocalExecuteAsync(entry, remoteInvokeMessage, resultMessage);
                //向客户端发送调用结果。
                await SendRemoteInvokeResult(sender, message.Id, resultMessage);
            }
            else
            {
                //通知客户端已接收到消息。
                await SendRemoteInvokeResult(sender, message.Id, resultMessage);
                //确保新起一个线程执行,不堵塞当前线程。
                await Task.Factory.StartNew(async () =>
                {
                    //执行本地代码。
                    await LocalExecuteAsync(entry, remoteInvokeMessage, resultMessage);
                }, TaskCreationOptions.LongRunning);
            }
        }
 public void CreateBus()
 {
     m_Sender = Substitute.For<IMessageSender>();
     m_Receiver = Substitute.For<IMessageReceiver>();
     m_MessageList = Substitute.For<IMessageRegistrationList>();
     m_MessageList.Messages.Returns(new List<Type>
     {
         typeof(TestMessage)
     });
     m_Bus = new MessageBus(m_Sender,
                            m_Receiver,
                            m_MessageList);
 }
Пример #26
0
 public ChangeZoneMsg(
     IMessageSender sender, 
     IMessageReceiver receiver,
     Entity entity,
     string destZone,
     Point destPosition,
     int sendTime)
     : base(MessageType.ChangeZone, sender, receiver, sendTime)
 {
     Entity = entity;
     DestZone = destZone;
     DestPosition = destPosition;
 }
Пример #27
0
        static MessageService()
        {
            if (ConfigurationManager.AppSettings["messaging.enabled"] != "true")
            {
                return;
            }

            var unity = ConfigurationManager.GetSection("unity");

            var cfg = unity != null && ((UnityConfigurationSection)unity).Containers[unityContainerName] != null
                          ? new UnityContainer().LoadConfiguration(unityContainerName)
                          : null;
            sender = cfg != null ? ConfigureFromUnity(cfg) : new DbMessageSender();
        }
Пример #28
0
 public InternalBus(IMessageSender messageSender, IBusBootstrapper busBootstrapper, IDataReceiver dataReceiver, HandlingProcessorStandard handlingProcessorStandard, HandlingProcessorInfrastructure handlingProcessorInfrastructure, PersistenceSynchronizationProcessor networkProcessor, MessageTargetsHandler messageTargetsHandler, NetworkSender networkSender, IHeartbeatManager heartbeatManager, IQueueConfiguration queueConfiguration)
 {
     _messageSender = messageSender;
     _busBootstrapper = busBootstrapper;
     _dataReceiver = dataReceiver;
     _handlingProcessorStandard = handlingProcessorStandard;
     _handlingProcessorInfrastructure = handlingProcessorInfrastructure;
     _networkProcessor = networkProcessor;
     _messageTargetsHandler = messageTargetsHandler;
     _networkSender = networkSender;
     _heartbeatManager = heartbeatManager;
     _queueConfiguration = queueConfiguration;
     _networkInputDisruptor = new Disruptor<InboundMessageProcessingEntry>(() => new InboundMessageProcessingEntry(),new MultiThreadedClaimStrategy(_queueConfiguration.InboundQueueSize), new SleepingWaitStrategy(), new RoundRobinThreadAffinedTaskScheduler(3));
     _outputDisruptor = new Disruptor<OutboundDisruptorEntry>(() => new OutboundDisruptorEntry(), new MultiThreadedClaimStrategy(_queueConfiguration.OutboundQueueSize), new SleepingWaitStrategy(), new RoundRobinThreadAffinedTaskScheduler(2));
 }
        public static IEventBusConfiguration RegisterEvents(this IEventBusConfiguration configuration, IMessageSender sender, Assembly assembly, Func<IQueryable<Type>, IQueryable<Type>> typeFilter = null)
        {
            // Get types.
            IQueryable<Type> types = assembly.GetTypes()
                .AsQueryable()
                .Where(t => typeof(IEvent).IsAssignableFrom(t));
            if (typeFilter != null)
                types = typeFilter(types);

            // Add types.
            configuration.RegisterEvents(sender, types.ToArray());

            // Done.
            return configuration;
        }
Пример #30
0
        public MainViewModel(IMessageSender messageSender, IMessageReceiver messageReceiver)
        {
            mDungeonCrawlMessageSender = new DungeonCrawlMessageSender(messageSender);
            mMessageReceiver = messageReceiver;

            RegAccountCommand = new RelayCommand(() =>
            {
                mDungeonCrawlMessageSender.RegAccount(Name, Pass, Email);
                mDungeonCrawlMessageSender.SetCookie();
            });
            SendChatMessageCommand = new RelayCommand(() => mDungeonCrawlMessageSender.SendChatMessage(ChatMessage));
            LoginAccountCommand = new RelayCommand(() =>
            {
                mDungeonCrawlMessageSender.LoginAccount(Name, Pass);
                mDungeonCrawlMessageSender.SetCookie();
            });
            EnterGameCommand = new RelayCommand(() => mDungeonCrawlMessageSender.EnterGame(PlayerName));
            GoLobbyCommand = new RelayCommand(() => mDungeonCrawlMessageSender.GoLobby());
        }
Пример #31
0
 public Project(ILogger logger, IMessageSender messageSender)
 {
     _logger        = logger;
     _messageSender = messageSender;
 }
Пример #32
0
 public static void Send <TMessage>(this IMessageSender <TMessage> sender, string ipAddress, int port, byte[] data)
     where TMessage : IMessage <IPEndPoint, ArraySegment <byte> >, new()
 {
     sender.Send(ipAddress, port, data, null);
 }
Пример #33
0
        internal SettingIoViewModel(
            RootSettingSync rootModel, AutomationSettingSync model, SaveFileManager saveFileManager, IMessageSender sender
            ) : base(sender)
        {
            _rootModel       = rootModel;
            _model           = model;
            _saveFileManager = saveFileManager;

            OpenInstructionUrlCommand       = new ActionCommand(OpenInstructionUrl);
            RequestEnableAutomationCommand  = new ActionCommand(OnEnableAutomationRequested);
            RequestDisableAutomationCommand = new ActionCommand(OnDisableAutomationRequested);
            ApplyPortNumberCommand          = new ActionCommand(ApplyPortNumber);

            ShowSaveModalCommand = new ActionCommand(ShowSaveModal);
            ShowLoadModalCommand = new ActionCommand(ShowLoadModal);

            ExportSettingToFileCommand   = new ActionCommand(SaveSettingToFile);
            ImportSettingFromFileCommand = new ActionCommand(LoadSettingFromFile);

            AutomationPortNumberText = new RProperty <string>(
                _model.AutomationPortNumber.Value.ToString(), v =>
            {
                //フォーマット違反になってないかチェック
                PortNumberIsInvalid.Value = !(int.TryParse(v, out int i) && i >= 0 && i < 65536);
            });

            _model.AutomationPortNumber.PropertyChanged += (_, __) =>
            {
                AutomationPortNumberText.Value = _model.AutomationPortNumber.Value.ToString();
            };
        }
Пример #34
0
 public Consumer(IMessageSender sender, IAtomicSingletonWriter <Entity> singleton)
 {
     _sender    = sender;
     _singleton = singleton;
 }
 public ValuesController(IConfiguration configuration, ISessionClient sessionClient, IMessageSender messageSender)
 {
     _configuration = configuration;
     _sessionClient = sessionClient;
     _messageSender = messageSender;
 }
 public Task OnReceived(IMessageSender sender, TransportMessage message)
 {
     return(Task.CompletedTask);
 }
Пример #37
0
 /// <summary>
 /// Initializes a new instance of the <see cref="EventBus"/> class.
 /// </summary>
 /// <param name="receiver">The receiver to use. If the receiver is <see cref="IDisposable"/>, it will be disposed when the processor is 
 /// disposed.</param>
 /// <param name="serializer">The serializer to use for the message body.</param>
 public EventBus(IMessageSender sender, IMetadataProvider metadata, ISerializer serializer)
 {
     this.sender = sender;
     this.metadata = metadata;
     this.serializer = serializer;
 }
 public async Task InvokeAsync(HttpContext context, IMessageSender messageSender)
 {
     context.Response.ContentType = "text/html;charset=utf-8";
     await context.Response.WriteAsync(messageSender.Send());
 }
Пример #39
0
 public ExecuteRequestHandler(ILog logger, IReplEngine replEngine, IMessageSender messageSender)
 {
     this.logger        = logger;
     this.replEngine    = replEngine;
     this.messageSender = messageSender;
 }
Пример #40
0
 public static void Send <TMessage, TPayload>(this IMessageSender <TMessage> sender, string ipAddress, int port, TPayload payload)
     where TMessage : IMessage <IPEndPoint, TPayload>, new()
 {
     Ensure.ArgumentNotNull(ipAddress, "ipAddress");
     sender.Send(ipAddress, port, payload, null);
 }
Пример #41
0
        /// <summary>
        /// 执行。
        /// </summary>
        /// <param name="sender">消息发送者。</param>
        /// <param name="message">调用消息。</param>
        public async Task ExecuteAsync(IMessageSender sender, TransportMessage message)
        {
            if (_logger.IsEnabled(LogLevel.Information))
            {
                _logger.LogInformation("接收到消息。");
            }

            if (!message.IsInvokeMessage())
            {
                return;
            }

            RemoteInvokeMessage remoteInvokeMessage;

            try
            {
                remoteInvokeMessage = message.GetContent <RemoteInvokeMessage>();
            }
            catch (Exception exception)
            {
                _logger.LogError("将接收到的消息反序列化成 TransportMessage<RemoteInvokeMessage> 时发送了错误。", exception);
                return;
            }

            var entry = _serviceEntryLocate.Locate(remoteInvokeMessage);

            if (entry == null)
            {
                if (_logger.IsEnabled(LogLevel.Error))
                {
                    _logger.LogError($"根据服务Id:{remoteInvokeMessage.ServiceId},找不到服务条目。");
                }
                return;
            }

            if (_logger.IsEnabled(LogLevel.Debug))
            {
                _logger.LogDebug("准备执行本地逻辑。");
            }

            var resultMessage = new RemoteInvokeResultMessage();

            try
            {
                var result = entry.Func(remoteInvokeMessage.Parameters);
                var task   = result as Task;

                if (task == null)
                {
                    resultMessage.Result = result;
                }
                else
                {
                    task.Wait();

                    var taskType = task.GetType().GetTypeInfo();
                    if (taskType.IsGenericType)
                    {
                        resultMessage.Result = taskType.GetProperty("Result").GetValue(task);
                    }
                }
            }
            catch (Exception exception)
            {
                if (_logger.IsEnabled(LogLevel.Error))
                {
                    _logger.LogError("执行本地逻辑时候发生了错误。", exception);
                }
                resultMessage.ExceptionMessage = GetExceptionMessage(exception);
            }

            try
            {
                if (_logger.IsEnabled(LogLevel.Debug))
                {
                    _logger.LogDebug("准备发送响应消息。");
                }

                await sender.SendAsync(TransportMessage.CreateInvokeResultMessage(message.Id, resultMessage));

                if (_logger.IsEnabled(LogLevel.Debug))
                {
                    _logger.LogDebug("响应消息发送成功。");
                }
            }
            catch (Exception exception)
            {
                if (_logger.IsEnabled(LogLevel.Error))
                {
                    _logger.LogError("发送响应消息时候发生了异常。", exception);
                }
            }
        }
Пример #42
0
 public static void Send <TMessage, TPayload>(this IMessageSender <TMessage> sender, IPAddress ipAddress, int port, TPayload payload, Action <Exception> callback)
     where TMessage : IMessage <IPEndPoint, TPayload>, new()
 {
     Ensure.ArgumentNotNull(ipAddress, "ipAddress");
     sender.Send(new IPEndPoint(ipAddress, port), payload, callback);
 }
Пример #43
0
 public static void Send <TMessage, TPayload>(this IMessageSender <TMessage> sender, IPAddress ipAddress, int port, TPayload payload)
     where TMessage : IMessage <IPEndPoint, TPayload>, new()
 {
     sender.Send(ipAddress, port, payload, null);
 }
Пример #44
0
 public static void Send <TMessage, TEndPoint, TPayload>(this IMessageSender <TMessage> sender, TEndPoint endPoint, TPayload payload)
     where TMessage : IMessage <TEndPoint, TPayload>, new()
 {
     sender.Send <TMessage, TEndPoint, TPayload>(endPoint, payload, null);
 }
Пример #45
0
 //--------------------------------------------------------Events:---------------------------------------------------------------------\\
 #region --Events--
 private void Connection_ConnectionNewRoosterMessage(IMessageSender sender, NewValidMessageEventArgs args)
 {
     NewRoosterMessage?.Invoke(this, args);
 }
Пример #46
0
 public SmsMessageCreatedEventHandler(IMessageSender <SmsMessageCreatedEvent> smsMessageCreatedEventSender)
 {
     _smsMessageCreatedEventSender = smsMessageCreatedEventSender;
 }
 public UpdateCoinbaseExchangeRatesCommand(IUpdateCoinbaseExchangeRatesCommandHandler updateCoinbaseExchangeRatesCommandHandler,
                                           IMessageSender messageSender)
 {
     _updateCoinbaseExchangeRatesCommandHandler = updateCoinbaseExchangeRatesCommandHandler;
     _messageSender = messageSender;
 }
Пример #48
0
        private void C_NewRoosterMessage(IMessageSender sender, NewValidMessageEventArgs args)
        {
            if (args.MESSAGE is RosterResultMessage msg && sender is XMPPClient client)
            {
                string to   = client.getXMPPAccount().getBareJid();
                string type = msg.TYPE;

                if (string.Equals(type, IQMessage.RESULT))
                {
                    ChatDBManager.INSTANCE.setAllNotInRoster(client.getXMPPAccount().getBareJid());
                }
                else if (!string.Equals(type, IQMessage.SET))
                {
                    // No roster result or set => return
                    return;
                }

                foreach (RosterItem item in msg.ITEMS)
                {
                    string    from = item.JID;
                    string    id   = ChatTable.generateId(from, to);
                    ChatTable chat = ChatDBManager.INSTANCE.getChat(id);
                    if (chat != null)
                    {
                        chat.inRoster = !string.Equals(item.SUBSCRIPTION, "remove");
                    }
                    else if (!string.Equals(item.SUBSCRIPTION, "remove"))
                    {
                        chat = new ChatTable(from, to)
                        {
                            inRoster = true,
                            chatType = ChatType.CHAT
                        };
                    }
                    else
                    {
                        continue;
                    }

                    // Only update the subscription state, if not set to subscribe:
                    if (!string.Equals(chat.subscription, "subscribe"))
                    {
                        chat.subscription = item.SUBSCRIPTION;
                    }
                    chat.subscriptionRequested = string.Equals(item.ASK, "subscribe");

                    switch (chat.subscription)
                    {
                    case "unsubscribe":
                    case "from":
                    case "none":
                    case "pending":
                    case null:
                        chat.presence = Presence.Unavailable;
                        break;

                    default:
                        break;
                    }

                    ChatDBManager.INSTANCE.setChat(chat, false, true);
                }
            }
        }
Пример #49
0
 public GuestbookService(IRepository <Guestbook> guestbookRepository, IMessageSender messageSender)
 {
     _guestbookRepository = guestbookRepository;
     _messageSender       = messageSender;
 }
Пример #50
0
        /// <summary>
        /// 执行。
        /// </summary>
        /// <param name="sender">消息发送者。</param>
        /// <param name="message">调用消息。</param>
        public async Task ExecuteAsync(IMessageSender sender, TransportMessage message)
        {
            if (_logger.IsEnabled(LogLevel.Information))
            {
                _logger.LogInformation("接收到消息。");
            }

            if (!message.IsInvokeMessage())
            {
                return;
            }

            RemoteInvokeMessage remoteInvokeMessage;

            try
            {
                remoteInvokeMessage = message.GetContent <RemoteInvokeMessage>();
            }
            catch (Exception exception)
            {
                _logger.LogError(exception, "将接收到的消息反序列化成 TransportMessage<RemoteInvokeMessage> 时发送了错误。");
                return;
            }

            var entry = _serviceEntryLocate.Locate(remoteInvokeMessage);

            if (entry == null)
            {
                if (_logger.IsEnabled(LogLevel.Error))
                {
                    _logger.LogError($"根据服务Id:{remoteInvokeMessage.ServiceId},找不到服务条目。");
                }
                return;
            }


            if (_logger.IsEnabled(LogLevel.Debug))
            {
                _logger.LogDebug("准备执行本地逻辑。");
            }

            var resultMessage = new RemoteInvokeResultMessage();

            //是否需要等待执行。
            if (entry.Descriptor.WaitExecution())
            {
                //执行本地代码。
                await  LocalExecuteAsync(entry, remoteInvokeMessage, resultMessage);

                //向客户端发送调用结果。
                await SendRemoteInvokeResult(sender, message.Id, resultMessage);
            }
            else
            {
                //通知客户端已接收到消息。
                await SendRemoteInvokeResult(sender, message.Id, resultMessage);

                //确保新起一个线程执行,不堵塞当前线程。
                await Task.Factory.StartNew(async() =>
                {
                    //执行本地代码。
                    await LocalExecuteAsync(entry, remoteInvokeMessage, resultMessage);
                }, TaskCreationOptions.LongRunning);
            }
        }
Пример #51
0
 internal DefaultMessageHandler()
 {
     _messages      = new Dictionary <string, IMessage>();
     _messageSender = MessageSenderFactory.GetDefaultMessageSender();
 }
Пример #52
0
 public CommandBus(IMessageSender messageSender, ITextSerialiser textSerialiser)
 {
     this._messageSender  = messageSender;
     this._textSerialiser = textSerialiser;
 }
 public override Task SendCoreAsync(IMessageSender sender, string method, object[] args, CancellationToken cancellationToken)
 {
     return(sender.SendUserAsync(UserId, method, args, cancellationToken));
 }
Пример #54
0
 public Chore(ILogger logger, IMessageSender messageSender)
 {
     _logger        = logger;
     _messageSender = messageSender;
 }
Пример #55
0
 public static void Send <TMessage>(this IMessageSender <TMessage> sender, string ipAddress, int port, byte[] data, int index, int count, Action <Exception> callback)
     where TMessage : IMessage <IPEndPoint, ArraySegment <byte> >, new()
 {
     Ensure.ArgumentNotNull(ipAddress, "ipAddress");
     sender.Send(IPAddress.Parse(ipAddress), port, new ArraySegment <byte>(data, index, count), callback);
 }
Пример #56
0
 public static void Send <TMessage>(this IMessageSender <TMessage> sender, IPAddress ipAddress, int port, byte[] data, Action <Exception> callback)
     where TMessage : IMessage <IPEndPoint, ArraySegment <byte> >, new()
 {
     Ensure.ArgumentNotNull(data, "data");
     sender.Send(ipAddress, port, data, 0, data.Length, callback);
 }