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); } }
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); }
///// <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); }
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; } }