public NamedPipeClient(string pipeName) { replyqueue = new List <queuemsg <T> >(); pipe = new NamedPipeWrapper.NamedPipeClient <T>(pipeName); pipe.AutoReconnect = true; pipe.Disconnected += (sender) => { Disconnected?.Invoke(); }; pipe.Connected += (sender) => { Connected?.Invoke(); }; pipe.Error += (e) => { Error?.Invoke(e); }; pipe.ServerMessage += (sender, message) => { var queue = replyqueue.Where(x => x.messageid == message.messageid).FirstOrDefault(); if (queue != null) { // Log.Information("received reply for " + message.messageid + " " + string.Format("Time elapsed: {0:mm\\:ss\\.fff}", queue.sw.Elapsed)); if (queue.Received) { return; } queue.result = message; queue.Received = true; if (queue.autoReset != null) { queue.autoReset.Set(); } return; } else { // Log.Information("received reply for unknown message id: " + message.messageid); } ServerMessage?.Invoke(message); }; }
public WindowsPipeClient(string channel, bool autoReconnect = false) { client = new NamedPipeWrapper.NamedPipeClient <BaseMessage>(channel); client.Connected += (conn) => Connected?.Invoke(); client.Disconnected += (conn) => Disconnected?.Invoke(); client.ServerMessage += (conn, msg) => ServerMessage?.Invoke(msg); client.Error += (ex) => Error?.Invoke(ex); }
public NamedPipeClient(string pipeName) { if (System.Threading.Monitor.TryEnter(lockobj, Config.local.thread_lock_timeout_seconds * 1000)) { try { replyqueue = new List <queuemsg <T> >(); } finally { System.Threading.Monitor.Exit(lockobj); } } pipe = new NamedPipeWrapper.NamedPipeClient <T>(pipeName); pipe.AutoReconnect = true; pipe.Disconnected += (sender) => { Disconnected?.Invoke(); }; pipe.Connected += (sender) => { Connected?.Invoke(); }; pipe.Error += (e) => { Error?.Invoke(e); }; pipe.ServerMessage += (sender, message) => { queuemsg <T> queue = null; if (System.Threading.Monitor.TryEnter(lockobj, Config.local.thread_lock_timeout_seconds * 1000)) { try { queue = replyqueue.Where(x => x != null && x.messageid == message.messageid).FirstOrDefault(); } finally { System.Threading.Monitor.Exit(lockobj); } } if (queue != null) { // Log.Information("received reply for " + message.messageid + " " + string.Format("Time elapsed: {0:mm\\:ss\\.fff}", queue.sw.Elapsed)); if (queue.Received) { return; } queue.result = message; queue.Received = true; if (queue.autoReset != null) { queue.autoReset.Set(); } return; } else { // Log.Information("received reply for unknown message id: " + message.messageid); } ServerMessage?.Invoke(message); }; }
public NamedPipeClient(string pipeName) { replyqueue = new List <queuemsg <T> >(); pipe = new NamedPipeWrapper.NamedPipeClient <T>(pipeName); pipe.AutoReconnect = true; pipe.Disconnected += (sender) => { Disconnected?.Invoke(); }; pipe.Connected += (sender) => { Connected?.Invoke(); }; pipe.Error += (e) => { Error?.Invoke(e); }; pipe.ServerMessage += (sender, message) => { var queue = replyqueue.Where(x => x.messageid == message.messageid).FirstOrDefault(); if (queue != null) { queue.result = message; queue.autoReset.Set(); return; } ServerMessage?.Invoke(message); }; }
private void Client_Signedin(Interfaces.entity.TokenUser user) { if (pipe != null) { return; } try { pipe = new OpenRPA.NamedPipeWrapper.NamedPipeClient <RPAMessage>("openrpa_service"); pipe.Connected += Pipe_Connected; pipe.Disconnected += Pipe_Disconnected; pipe.Error += Pipe_Error; pipe.ServerMessage += Pipe_ServerMessage; pipe.Start(); } catch (Exception ex) { Log.Error(ex.ToString()); } }