Exemplo n.º 1
0
        private void OnMessageReceived(object sender, ClientEvents.MessageReceivedEventArgs ea)
        {
            if (sender != this.Client)
            {
                return;
            }

            //获取新的数据,交由通道处理
            var adderss = ea.Destination;

            if (string.IsNullOrEmpty(adderss))
            {
                return;
            }

            if (adderss == this.UnicastChannel.HostAddress)
            {
                this.UnicastChannel.Process(ea);
            }
            else
            {
                var channel = GetMulticastChannel(adderss);
                if (channel == null)
                {
                    throw new ApplicationException(string.Format(Strings.NoChannelCreatedAtAddress, adderss));
                }
                channel.Process(ea);
            }
        }
Exemplo n.º 2
0
 internal void Process(ClientEvents.MessageReceivedEventArgs ea)
 {
     RtpCapability.Process(this.Context.Client, ea); //新版本中处理消息,统一用能力事件
     //var capabilityName = RtpCapability.GetCapabilityName(ea.Message);
     //var capability = GetCapability(capabilityName);
     ////if (capability == null) throw new ApplicationException("在地址" + this.Address + "的rtp通道上没有给予名称为" + capabilityName + "的能力");
     //if (capability == null) return; //这代表虽然加入了该地址,但是并不需要这个能力,不予处理
     //capability.Process(ea);
 }
Exemplo n.º 3
0
        ///// <summary>
        ///// 获得所在组播的信息
        ///// </summary>
        ///// <returns></returns>
        //public Multicast GetMulticast()
        //{
        //    return this.Channel.Context.Client.GetMulticast(this.Channel.HostAddress);
        //}

        internal static void Process(AnycastClient client, ClientEvents.MessageReceivedEventArgs ea)
        {
            var data = RtpDataAnalyzer.Deserialize(ea.Message.Origin, ea.Message.Body);

            if (TryProcessCall(ea.Message, data))
            {
                return;
            }

            var header    = ea.Message.Header;
            var origin    = ea.Message.Origin;
            var eventName = header.GetValue <string>(FieldRtpEventName);

            RaiseLocalEvent(client, origin, eventName, data);
        }
Exemplo n.º 4
0
        private void OnMessageReceived(object sender, ClientEvents.MessageReceivedEventArgs ea)
        {
            if (sender != _communicator.Context.Client)
            {
                return;
            }

            var message = ea.Message;

            if (message.Type != MessageType.Custom)
            {
                return;
            }

            var info = message.Header.GetObject("info");

            if (info.GetValue <Guid>("requestId") != _info.GetValue <Guid>("requestId"))
            {
                return;
            }

            if (message.Header.GetValue <bool>(TransferCommand.SaveResult, false))
            {
                //更新_info
                _info.Replace(info);
                _future.SetResult(true); //收到保存结果的信息
                return;
            }


            if (message.Header.GetValue <bool>(TransferCommand.LoadResult, false))
            {
                //更新_info
                _info.Replace(info);
                _content = message.Body;
                _future.SetResult(true); //收到加载的结果的信息
                return;
            }

            if (message.Header.GetValue <bool>(TransferCommand.DeleteResult, false))
            {
                //更新_info
                _info.Replace(info);
                _future.SetResult(true); //收到删除的结果
                return;
            }


            if (message.Header.GetValue <bool>(TransferCommand.SizeResult, false))
            {
                //更新_info
                _info.Replace(info);
                _future.SetResult(true); //收到获取size的结果
                return;
            }

            if (message.Header.GetValue <bool>(TransferCommand.Error, false))
            {
                _info.Replace(info);
                if (_future != null)
                {
                    _future.SetResult(false);
                }
                _error = message.Header.GetValue <string>("error");
                return;
            }
        }