public void Reply (IDuplexChannel channel, bool useTimeout) { EventsHandler.BeforeSendReply (); if (useTimeout) channel.Send (ReplyMessage, Operation.Parent.ChannelDispatcher.timeouts.SendTimeout); else channel.Send (ReplyMessage); }
public void Reply(IDuplexChannel channel, bool useTimeout) { EventsHandler.BeforeSendReply(); if (useTimeout) { channel.Send(ReplyMessage, Operation.Parent.ChannelDispatcher.timeouts.SendTimeout); } else { channel.Send(ReplyMessage); } }
public void Reply(IDuplexChannel channel, bool useTimeout) { EventsHandler.BeforeSendReply(); if (useTimeout && Operation.Parent.ChannelDispatcher != null) // FIXME: this condition is a workaround for NRE, there might be better way to get timeout value. { channel.Send(ReplyMessage, Operation.Parent.ChannelDispatcher.timeouts.SendTimeout); } else { channel.Send(ReplyMessage); } }
internal CacheChange NewChange(ChangeKind kind, Data data, InstanceHandle instance) { var change = new CacheChange() { WriterGuid = Id, SequenceNumber = SequenceNumber.Increment(), Kind = kind, InstanceHandle = instance, Data = data }; var message = new Message() { Header = new Header() { Protocol = ProtocolId.ProtocolRTPS, Version = ProtocolVersion.v22, Vendor = VendorId.Unknown, GuidPrefix = new GuidPrefix() } }; message.AddSubMessage(new DataSubMessage(data)); message.AddSubMessage(new HeartbeatSubMessage()); Channel.Send(message); return(change); }
//入口方法 static void Main(string[] args) { try { NetTcpBinding binding = new NetTcpBinding(); using (Message message = Message.CreateMessage(binding.MessageVersion, "sendMessage", "Message Body")) { //创建ChannelFactory IChannelFactory <IDuplexChannel> factory = binding.BuildChannelFactory <IDuplexChannel>(new BindingParameterCollection()); factory.Open(); //这里创建IRequestChannel IDuplexChannel duplexChannel = factory.CreateChannel(new EndpointAddress("net.tcp://localhost:9090/DuplexService/Point2")); duplexChannel.Open(); //发送消息 duplexChannel.Send(message); Console.WriteLine("已经成功发送消息!"); //var msg = duplexChannel.Receive(); //Console.WriteLine($"收到消息:{msg.GetBody<string>()}"); duplexChannel.Close(); factory.Close(); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } finally { Console.Read(); } }
protected override void SendReply(Message reply, IDuplexChannel channel, Message item) { if (FaultHelper.AddressReply(item, reply)) { channel.Send(reply); } }
private void Button_Click(object sender, RoutedEventArgs e) { using (Message message = Message.CreateMessage(binding.MessageVersion, "sendMessage", "Message Body")) { //创建ChannelFactory duplexChannel.Send(message);//发送消息 } }
public void Reply (IDuplexChannel channel, bool useTimeout) { EventsHandler.BeforeSendReply (); if (useTimeout && Operation.Parent.ChannelDispatcher != null) // FIXME: this condition is a workaround for NRE, there might be better way to get timeout value. channel.Send (ReplyMessage, Operation.Parent.ChannelDispatcher.timeouts.SendTimeout); else channel.Send (ReplyMessage); }