コード例 #1
0
ファイル: ClientMessageHandler.cs プロジェクト: ciker/twino
        public async Task Handle(MqClient client, TmqMessage message)
        {
            if (string.IsNullOrEmpty(message.Target))
            {
                return;
            }

            if (message.Target.StartsWith("@name:"))
            {
                List <MqClient> receivers = _server.FindClientByName(message.Target.Substring(6));
                if (receivers.Count > 0)
                {
                    if (message.FirstAcquirer)
                    {
                        MqClient first = receivers.FirstOrDefault();
                        receivers.Clear();
                        receivers.Add(first);
                    }

                    await ProcessMultipleReceiverClientMessage(client, receivers, message);
                }
                else if (message.ResponseRequired)
                {
                    await client.SendAsync(MessageBuilder.ResponseStatus(message, KnownContentTypes.NotFound));
                }
            }
            else if (message.Target.StartsWith("@type:"))
            {
                List <MqClient> receivers = _server.FindClientByType(message.Target.Substring(6));
                if (receivers.Count > 0)
                {
                    if (message.FirstAcquirer)
                    {
                        MqClient first = receivers.FirstOrDefault();
                        receivers.Clear();
                        receivers.Add(first);
                    }

                    await ProcessMultipleReceiverClientMessage(client, receivers, message);
                }
                else if (message.ResponseRequired)
                {
                    await client.SendAsync(MessageBuilder.ResponseStatus(message, KnownContentTypes.NotFound));
                }
            }
            else
            {
                await ProcessSingleReceiverClientMessage(client, message);
            }
        }