static void ClientThreadLoop(object mrevent) { ManualResetEvent resetEvent = (ManualResetEvent)mrevent; // Construct InstanceContext to handle messages on callback interface InstanceContext instanceContext = new InstanceContext(new CallbackHandler()); _client = ClientHelper.GetDuplexClient(instanceContext,_serverProcId, new ConnectionOptions(),BindingScheme.TCP); _client.Open(); var requestMessage = new RequestMessage(); var registerMessage = new RegisterMessage { Counter = _counterType }; Trace.WriteLine(registerMessage.Counter.ToString()); requestMessage.SetBody(registerMessage); _client.Subscribe(requestMessage); resetEvent.WaitOne(); _client.Close(); }
public void Post(Codex.IPC.DataTypes.RequestMessage request) { base.Channel.Post(request); }
public Task <Codex.IPC.DataTypes.ResponseMessage> CallAsync(Codex.IPC.DataTypes.RequestMessage request) { return(base.Channel.CallAsync(request)); }
public void UnSubscribe(Codex.IPC.DataTypes.RequestMessage request) { base.Channel.UnSubscribe(request); }
public Codex.IPC.DataTypes.ResponseMessage Call(Codex.IPC.DataTypes.RequestMessage request) { return(base.Channel.Call(request)); }
/// <summary> /// Subscribe message from the client. /// </summary> /// <param name="request">Object representing the requested information</param> /// <remarks> /// The client subscribes to the events from the server. /// This may include client specific events or general broadcasts. /// </remarks> public void Subscribe(RequestMessage request) { IIPCDuplexCallback callback = OperationContext.Current.GetCallbackChannel<IIPCDuplexCallback>(); request.Header.MessageType = (int)MessageType.SUBSCRIBE; if (!_subscriptions.ContainsKey(request.Header.ProcessID.ToString())) _subscriptions.TryAdd(request.Header.ProcessID.ToString(), callback); OnMessageRecieved(null, new MessageRecievedEventArgs(request)); }
public void Send(Codex.IPC.DataTypes.RequestMessage request) { base.Channel.Send(request); }
/// <summary> /// Send message from the client. /// </summary> /// <param name="request">Object representing the requested information</param> /// <remarks> /// This should be used either when you need a one way notification or an out of band reply. /// </remarks> public void Send(RequestMessage request) { IIPCDuplexCallback callback = OperationContext.Current.GetCallbackChannel<IIPCDuplexCallback>(); var response = Call(request); callback?.Reply(response); }
/// <summary> /// Send message from the client. /// </summary> /// <param name="request">Object representing the requested information</param> /// <remarks> /// This should be used either when you need a one way notification. /// </remarks> public void Post(RequestMessage request) { var arg = new MessageRecievedEventArgs(request); OnMessageRecieved(null, arg); }
/// <summary> /// Call message from the client requesting information. /// </summary> /// <param name="request">Object representing the requested information</param> /// <returns>Response</returns> public ResponseMessage Call(RequestMessage request) { var arg = new MessageRecievedEventArgs(request); OnMessageRecieved(null, arg); return arg.Response; }
public MessageRecievedEventArgs(RequestMessage request) { Request = request; Response = new ResponseMessage(Request.Header); }
/// <summary> /// UnSubscribe message from the client. /// </summary> /// <param name="request">Object representing the requested information</param> public void UnSubscribe(RequestMessage request) { request.Header.MessageType = (int)MessageType.UNSUBSCRIBE; IIPCDuplexCallback notUsed = null; if (_subscriptions.ContainsKey(request.Header.ProcessID.ToString())) _subscriptions.TryRemove(request.Header.ProcessID.ToString(), out notUsed); OnMessageRecieved(null, new MessageRecievedEventArgs(request)); }