示例#1
0
        public void Receive(Guid hubId, MessageHub.Message message)
        {
            MessageEnvelope env = new MessageEnvelope
            {
                SenderId = hubId,
                Contents = message
            };

            Receive(env);
        }
示例#2
0
        public void Send(Guid senderId, MessageHub.Message message)
        {
            var clients = _clients.All();

            foreach (MsmqConnectedClient client in clients)
            {
                if (client.Id == senderId)
                {
                    continue;
                }

                client.Receive(senderId, message);
            }
        }
示例#3
0
        public override Task Broadcast(MessageHub.Message message)
        {
            MessageEnvelope env = new MessageEnvelope();

            env.SenderId  = Id;
            env.ServiceOp = HubServiceOperation.Send;
            env.Contents  = message;

            Message msg = new Message();

            msg.Body      = env;
            msg.Formatter = new XmlMessageFormatter(new Type[1] {
                typeof(MessageEnvelope)
            });

            _remoteQueue.Send(msg);
            return(Task.CompletedTask);
        }
示例#4
0
        private void OnReceiveCompleted(object sender, ReceiveCompletedEventArgs e)
        {
            MessageQueue mq  = (MessageQueue)sender;
            Message      msg = mq.EndReceive(e.AsyncResult);

            try
            {
                MessageEnvelope env = (MessageEnvelope)msg.Body;

                switch (env.ServiceOp)
                {
                case HubServiceOperation.Send:
                    if (env.IsSecure)
                    {
                        SecureMessageContainer container = (SecureMessageContainer)env.Contents;
                        SendSecure(env.SenderId, container);
                    }
                    else
                    {
                        MessageHub.Message hubMsg = (MessageHub.Message)env.Contents;
                        Send(env.SenderId, hubMsg);
                    }
                    break;

                case HubServiceOperation.AddReceiver:
                    MsmqConnectedClient client = (MsmqConnectedClient)env.Contents;
                    AddReceiver(client);
                    break;

                case HubServiceOperation.RemoveReceiver:
                    Guid clientId = (Guid)env.Contents;
                    RemoveReceiver(clientId);
                    break;
                }
            }
            finally
            {
                msg.Dispose();
                mq.BeginReceive();
            }
        }
示例#5
0
 public void Receive(Guid senderId, MessageHub.Message message)
 {
     base.Receive(message);
 }