public void Reply (IDuplexChannel channel, bool useTimeout)
		{
			EventsHandler.BeforeSendReply ();
			if (useTimeout)
				channel.Send (ReplyMessage, Operation.Parent.ChannelDispatcher.timeouts.SendTimeout);
			else
				channel.Send (ReplyMessage);
		}
예제 #2
0
 public void Reply(IDuplexChannel channel, bool useTimeout)
 {
     EventsHandler.BeforeSendReply();
     if (useTimeout)
     {
         channel.Send(ReplyMessage, Operation.Parent.ChannelDispatcher.timeouts.SendTimeout);
     }
     else
     {
         channel.Send(ReplyMessage);
     }
 }
예제 #3
0
 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);
     }
 }
예제 #4
0
        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);
        }
예제 #5
0
 //入口方法
 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);
     }
 }
예제 #7
0
 private void Button_Click(object sender, RoutedEventArgs e)
 {
     using (Message message = Message.CreateMessage(binding.MessageVersion, "sendMessage", "Message Body"))
     {
         //创建ChannelFactory
         duplexChannel.Send(message);//发送消息
     }
 }
예제 #8
0
		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);
		}