public void AddListener() { PipeListener serverPipe = new PipeListener(PipeListener.Name); serverPipes.Add(serverPipe); serverPipe.DataReceived += (sndr, data) => { mDispatcher.BeginInvoke(new Action(() => { Process(serverPipe, data); })); }; serverPipe.Connected += (sndr, args) => { mDispatcher.BeginInvoke(new Action(() => { // if we used a listener allocate a replacement one AddListener(); })); }; serverPipe.PipeClosed += (sndr, args) => { mDispatcher.BeginInvoke(new Action(() => { serverPipes.Remove(serverPipe); })); }; }
BlockingPipeListener(Loop loop) : base(loop) { PipeListener = new PipeListener(loop); Listener = PipeListener as Listener; Handle = PipeListener; }
public void NotNullListener() { var t = new PipeListener(); Assert.Throws<ArgumentNullException>(() => new PipeListener(null)); Assert.Throws<ArgumentNullException>(() => t.Bind(null)); t.Close(); }
public static void Stress(string name) { for (int j = 0; j < 10; j++) { int times = 10; int close_cb_called = 0; int cl_send_cb_called = 0; int cl_recv_cb_called = 0; int sv_send_cb_called = 0; int sv_recv_cb_called = 0; var server = new PipeListener(); server.Bind(name); server.Listen((pipe) => { pipe.Resume(); pipe.Read(Encoding.ASCII, (str) => { sv_recv_cb_called++; Assert.AreEqual(Times("PING", times), str); for (int i = 0; i < times; i++) { pipe.Write(Encoding.ASCII, "PONG", (s) => { sv_send_cb_called++; }); } pipe.Close(() => { close_cb_called++; }); server.Close(() => { close_cb_called++; }); }); }); Pipe.Connect(name, (_, client) => { client.Resume(); for (int i = 0; i < times; i++) { client.Write(Encoding.ASCII, "PING", (s) => { cl_send_cb_called++; }); } client.Read(Encoding.ASCII, (str) => { cl_recv_cb_called++; Assert.AreEqual(Times("PONG", times), str); client.Close(() => { close_cb_called++; }); }); }); Assert.AreEqual(0, close_cb_called); Assert.AreEqual(0, cl_send_cb_called); Assert.AreEqual(0, cl_recv_cb_called); Assert.AreEqual(0, sv_send_cb_called); Assert.AreEqual(0, sv_recv_cb_called); Loop.Default.Run(); Assert.AreEqual(3, close_cb_called); Assert.AreEqual(times, cl_send_cb_called); Assert.AreEqual(1, cl_recv_cb_called); Assert.AreEqual(times, sv_send_cb_called); Assert.AreEqual(1, sv_recv_cb_called); #if DEBUG Assert.AreEqual(1, UV.PointerCount); #endif } }
public PipeServer() { PipeName = string.Format("exTibiaS{0}", GameClient.Process.Id); Pipe = new NamedPipeServerStream(PipeName, PipeDirection.InOut, -1, PipeTransmissionMode.Message, PipeOptions.Asynchronous); OnReceive += new PipeListener(PipeServer_OnReceive); Pipe.BeginWaitForConnection(new AsyncCallback(BeginWaitForConnection), null); }
public void TestEventListener() { var waitHandle = new ManualResetEvent(false); PipeListener.MkStaticInstance(); PipeListener.staticpipelistener.OnMusicPlay += (songinfo) => { Assert.IsNotNull(songinfo.Album); Assert.IsNotNull(songinfo.AlbumArtBase64); Assert.IsNotNull(songinfo.AlbumArtist); Assert.IsNotNull(songinfo.Title); Assert.IsNotNull(songinfo.TrackCount); Assert.IsNotNull(songinfo.Year); Assert.IsNotNull(songinfo.Composer); songinfo.GetType().GetProperties().ToList().ForEach(itm => { if (itm.GetValue(songinfo) is string str && itm.Name != "AlbumArtBase64") { Console.WriteLine($"{itm.Name} : {str}"); } }); waitHandle.Set(); }; waitHandle.WaitOne(Timeout.Infinite); PipeListener.staticpipelistener.StopPipeListener(); }
protected override void OnStartup(StartupEventArgs e) { //Start Pipe Listener PipeListener.MkStaticInstance(); //Load config if (Core.ConfigStore.ConfigExists()) { Core.ConfigStore.LoadStaticConfig(); Core.ConfigStore.StaticConfig.Theme.CurrentTheme.ApplyTheme(); } else { Core.ConfigStore.StaticConfig.Theme.CurrentTheme.ApplyTheme(); UI.MainWindow.OpenSingletonWindow(); } //Start Auto Tweet AutoTweet.AutoTweetSingleton.InitListner( PipeListener.StaticPipeListener ?? throw new InvalidOperationException(), ConfigStore.StaticConfig); //Init Notify Icon NotifyIconManager.NotifyIconSingleton.InitIcon(); //Check update new UpdateChecker(NotifyIconManager.NotifyIconSingleton).CheckUpdateAsync(); //Start iTunes Plugin Plugin.ITunesPlugin.Start(); }
public void NotNullListener() { var t = new PipeListener(); Assert.Throws <ArgumentNullException>(() => new PipeListener(null)); Assert.Throws <ArgumentNullException>(() => t.Bind(null)); t.Close(); }
public static void OneSideClose(string name) { int close_cb_called = 0; int cl_send_cb_called = 0; int cl_recv_cb_called = 0; int sv_send_cb_called = 0; int sv_recv_cb_called = 0; var server = new PipeListener(); server.Bind(name); server.IncommingStream += () => { var pipe = server.AcceptStream(); pipe.Resume(); pipe.Read(Encoding.ASCII, (str) => { sv_recv_cb_called++; Assert.AreEqual("PING", str); pipe.Write(Encoding.ASCII, "PONG", (s) => { sv_send_cb_called++; }); pipe.Close(() => { close_cb_called++; }); server.Close(() => { close_cb_called++; }); }); }; server.Listen(); Pipe client = new Pipe(); client.Connect(name, (_) => { client.Read(Encoding.ASCII, (str) => { cl_recv_cb_called++; Assert.AreEqual("PONG", str); }); client.Complete += () => { close_cb_called++; }; client.Resume(); client.Write(Encoding.ASCII, "PING", (s) => { cl_send_cb_called++; }); }); Assert.AreEqual(0, close_cb_called); Assert.AreEqual(0, cl_send_cb_called); Assert.AreEqual(0, cl_recv_cb_called); Assert.AreEqual(0, sv_send_cb_called); Assert.AreEqual(0, sv_recv_cb_called); Loop.Default.Run(); Assert.AreEqual(3, close_cb_called); Assert.AreEqual(1, cl_send_cb_called); Assert.AreEqual(1, cl_recv_cb_called); Assert.AreEqual(1, sv_send_cb_called); Assert.AreEqual(1, sv_recv_cb_called); #if DEBUG Assert.AreEqual(1, UV.PointerCount); #endif }
public void AddListener() { PipeListener serverPipe = new PipeListener(Name); serverPipes.Add(serverPipe); serverPipe.DataReceived += (sndr, data) => { //mDispatcher.BeginInvoke(new Action(() => { EMessageTypes type = EMessageTypes.eCall; int seqID = 0; string func = null; List <byte[]> args = PipeListener.ParsePacket(data, ref type, ref seqID, ref func); List <byte[]> ret = null; if (func == "InitSession") { int SessionId = BitConverter.ToInt32(args[0], 0); bool Duplicate = mDispatcher.Invoke(new Func <bool>(() => { return(CountSessions(SessionId) > 0); })); ret = new List <byte[]>(); ret.Add(BitConverter.GetBytes(Duplicate)); serverPipe.SessionID = SessionId; } else if (args != null) { ret = Process(func, args); } if (ret != null) { serverPipe.SendPacket(type, seqID, func, ret); } //})); }; serverPipe.Connected += (sndr, args) => { mDispatcher.BeginInvoke(new Action(() => { // if we used a listener allocate a replacement one AddListener(); })); }; serverPipe.PipeClosed += (sndr, args) => { mDispatcher.BeginInvoke(new Action(() => { serverPipes.Remove(serverPipe); })); }; }
protected override void Initialize() { _pipeListener = new PipeListener(UnsafeLoop, false); _pipeListener.Listen(PipeName); if (Logger.InfoEnabled) { Logger.ListeningOnPipe(LoopThreadId, PipeName); } }
protected override void Initialize() { this.pipeListener = new PipeListener(this.UnsafeLoop, false); this.pipeListener.Listen(this.PipeName); if (Logger.InfoEnabled) { Logger.Info("{} ({}) listening on pipe {}.", nameof(DispatcherEventLoop), this.LoopThreadId, this.PipeName); } }
public void OneSideClose(string name) { int close_cb_called = 0; int cl_send_cb_called = 0; int cl_recv_cb_called = 0; int sv_send_cb_called = 0; int sv_recv_cb_called = 0; var server = new PipeListener(); server.Bind(name); server.Connection += () => { var pipe = server.Accept(); pipe.Resume(); pipe.Read(Encoding.ASCII, (str) => { sv_recv_cb_called++; Assert.AreEqual("PING", str); pipe.Write(Encoding.ASCII, "PONG", (s) => { sv_send_cb_called++; }); pipe.Close(() => { close_cb_called++; }); server.Close(() => { close_cb_called++; }); }); }; server.Listen(); Pipe client = new Pipe(); client.Connect(name, (_) => { client.Read(Encoding.ASCII, (str) => { cl_recv_cb_called++; Assert.AreEqual("PONG", str); }); client.Complete += () => { close_cb_called++; }; client.Resume(); client.Write(Encoding.ASCII, "PING", (s) => { cl_send_cb_called++; }); }); Assert.AreEqual(0, close_cb_called); Assert.AreEqual(0, cl_send_cb_called); Assert.AreEqual(0, cl_recv_cb_called); Assert.AreEqual(0, sv_send_cb_called); Assert.AreEqual(0, sv_recv_cb_called); Loop.Default.Run(); Assert.AreEqual(3, close_cb_called); Assert.AreEqual(1, cl_send_cb_called); Assert.AreEqual(1, cl_recv_cb_called); Assert.AreEqual(1, sv_send_cb_called); Assert.AreEqual(1, sv_recv_cb_called); #if DEBUG Assert.AreEqual(1, UV.PointerCount); #endif }
private void NamedPipesBegin() { UseThisThreadForEvents(); PipeSender.begin("FromArduino"); PipeListener.begin("ToArduino", new NewMessageDelegate(PipesMessageHandler)); connectionTestTimer = new DispatcherTimer(); connectionTestTimer.Tick += ConnectionTestTimer_Tick; connectionTestTimer.Interval = new TimeSpan(0, 0, 2); connectionTestTimer.Start(); }
public static void Simple(string name) { int close_cb_called = 0; int cl_send_cb_called = 0; int cl_recv_cb_called = 0; int sv_send_cb_called = 0; int sv_recv_cb_called = 0; var server = new PipeListener(); server.Bind(name); server.Listen((pipe) => { pipe.Resume(); pipe.Read(Encoding.ASCII, (str) => { sv_recv_cb_called++; Assert.AreEqual("PING", str); pipe.Write(Encoding.ASCII, "PONG", (s) => { sv_send_cb_called++; }); pipe.Close(() => { close_cb_called++; }); server.Close(() => { close_cb_called++; }); }); }); Pipe.Connect(name, (_, client) => { client.Resume(); client.Write(Encoding.ASCII, "PING", (s) => { cl_send_cb_called++; }); client.Read(Encoding.ASCII, (str) => { cl_recv_cb_called++; Assert.AreEqual("PONG", str); client.Close(() => { close_cb_called++; }); }); }); Assert.AreEqual(0, close_cb_called); Assert.AreEqual(0, cl_send_cb_called); Assert.AreEqual(0, cl_recv_cb_called); Assert.AreEqual(0, sv_send_cb_called); Assert.AreEqual(0, sv_recv_cb_called); Loop.Default.Run(); Assert.AreEqual(3, close_cb_called); Assert.AreEqual(1, cl_send_cb_called); Assert.AreEqual(1, cl_recv_cb_called); Assert.AreEqual(1, sv_send_cb_called); Assert.AreEqual(1, sv_recv_cb_called); #if DEBUG Assert.AreEqual(1, UV.PointerCount); #endif }
public void AddListener() { PipeListener serverPipe = new PipeListener(Name); serverPipes.Add(serverPipe); serverPipe.DataReceived += (sndr, data) => { //mDispatcher.BeginInvoke(new Action(() => { RemoteCall call = PipeListener.ByteArrayToObject(data); if (call.func == "InitSession") { int SessionId = (int)call.args; IPCSession session = new IPCSession(); //session.version = App.mVersion; session.duplicate = mDispatcher.Invoke(new Func <bool>(() => { return(CountSessions(SessionId) > 0); })); call.args = session; serverPipe.SessionID = SessionId; } else { call = Process(call); } serverPipe.Send(PipeListener.ObjectToByteArray(call)); //})); }; serverPipe.Connected += (sndr, args) => { mDispatcher.BeginInvoke(new Action(() => { // if we used a listener allocate a replacement one AddListener(); })); }; serverPipe.PipeClosed += (sndr, args) => { mDispatcher.BeginInvoke(new Action(() => { serverPipes.Remove(serverPipe); })); }; }
public void SendPushNotification(string func, object args) { foreach (PipeListener serverPipes in serverPipes) { if (!serverPipes.IsConnected()) { continue; } RemoteCall call = new RemoteCall(); call.seqID = 0; call.type = "push"; call.func = func; call.args = args; serverPipes.Send(PipeListener.ObjectToByteArray(call)); } }
public void TestImageDecoder() { var waitHandle = new ManualResetEvent(false); PipeListener.MkStaticInstance(); PipeListener.staticpipelistener.OnMusicPlay += (songinfo) => { if (songinfo.IsAlbumArtAvaliable()) { Console.WriteLine($"Image Width : {songinfo.GetAlbumArt().Width}"); Console.WriteLine($"Image Height : {songinfo.GetAlbumArt().Height}"); } Assert.IsTrue(songinfo.AlbumArtBase64.Length == 0 || songinfo.IsAlbumArtAvaliable()); songinfo.GetType().GetProperties().ToList().ForEach(itm => Console.WriteLine($"{itm.Name} : {itm.GetValue(songinfo)}")); waitHandle.Set(); }; waitHandle.WaitOne(Timeout.Infinite); PipeListener.staticpipelistener.StopPipeListener(); }
protected override void Initialize() { try { Loop loop = ((ILoopExecutor)this).UnsafeLoop; this.pipeListener = new PipeListener(loop, false); this.pipeListener.Listen(this.PipeName); if (Logger.InfoEnabled) { Logger.Info("{} ({}) listening on pipe {}.", nameof(DispatcherEventLoop), this.LoopThreadId, this.PipeName); } this.pipeStartTaskCompletionSource.TryComplete(); } catch (Exception error) { this.pipeStartTaskCompletionSource.TrySetException(error); throw; } }
protected void Process(PipeListener pipe, byte[] data) { string t = Thread.CurrentThread.Name; RemoteCall call = PipeListener.ByteArrayToObject(data); //try { if (call.func == "GetVersion") { call.args = App.mVersion; } else if (call.func == "GetFilteringMode") { call.args = App.engine.GetFilteringMode(); } else if (call.func == "SetFilteringMode") { call.args = App.engine.SetFilteringMode((Firewall.FilteringModes)call.args); } else if (call.func == "GetAuditPol") { call.args = App.engine.GetAuditPol(); } else if (call.func == "SetAuditPol") { call.args = App.engine.SetAuditPol((Firewall.Auditing)call.args); } else if (call.func == "GetPrograms") { call.args = App.engine.GetPrograms(GetArg <List <Guid> >(call.args, 0)); } else if (call.func == "GetProgram") { call.args = App.engine.GetProgram(GetArg <ProgramList.ID>(call.args, 0), GetArg <bool>(call.args, 1)); } else if (call.func == "AddProgram") { call.args = App.engine.AddProgram(GetArg <ProgramList.ID> (call.args, 0), GetArg <Guid>(call.args, 1)); } else if (call.func == "UpdateProgram") { call.args = App.engine.UpdateProgram(GetArg <Guid>(call.args, 0), GetArg <Program.Config>(call.args, 1)); } else if (call.func == "MergePrograms") { call.args = App.engine.MergePrograms(GetArg <Guid>(call.args, 0), GetArg <Guid>(call.args, 1)); } else if (call.func == "SplitPrograms") { call.args = App.engine.SplitPrograms(GetArg <Guid>(call.args, 0), GetArg <ProgramList.ID>(call.args, 1)); } else if (call.func == "RemoveProgram") { call.args = App.engine.RemoveProgram(GetArg <Guid>(call.args, 0), GetArg <ProgramList.ID>(call.args, 1)); } else if (call.func == "LoadRules") { call.args = App.engine.LoadRules(); } else if (call.func == "GetRules") { call.args = App.engine.GetRules((List <Guid>)call.args); } else if (call.func == "UpdateRule") { call.args = App.engine.UpdateRule((FirewallRule)call.args); } else if (call.func == "RemoveRule") { call.args = App.engine.RemoveRule((FirewallRule)call.args); } else if (call.func == "ClearLog") { call.args = App.engine.ClearLog((bool)call.args); } else if (call.func == "CleanUpPrograms") { call.args = App.engine.CleanUpPrograms(); } else if (call.func == "GetConnections") { call.args = App.engine.GetConnections((List <Guid>)call.args); } else if (call.func == "GetAllApps") { call.args = App.engine.GetAllApps(); } /*else if (call.func == "ApplyTweak") * { * call.args = App.engine.ApplyTweak((Tweak)call.args); * } * else if (call.func == "TestTweak") * { * call.args = App.engine.TestTweak((Tweak)call.args); * } * else if (call.func == "UndoTweak") * { * call.args = App.engine.UndoTweak((Tweak)call.args); * }*/ else { call.args = new Exception("Unknon FunctionCall"); } } /*catch (Exception err) * { * AppLog.Line("Error in {0}: {1}", MiscFunc.GetCurrentMethod(), err.Message); * call.args = err; * }*/ pipe.Send(PipeListener.ObjectToByteArray(call)); }
private void dispose() { PipeSender.dispose(); PipeListener.dispose(new NewMessageDelegate(PipesMessageHandler)); }
private void SetupListeners() { constructionListener = Pipes.RegisterListener<DRTConstructed>(DRTConstructed.PIPE_NAME, new Listener<DRTConstructed>(a => constructionQueue.Enqueue(a))); bucketStateListener = Pipes.RegisterListener<BucketState>(BucketState.PIPE_NAME, new Listener<BucketState>(a => { Peer p; if (peers.TryGetValue(a.LocalId, out p)) p.UpdateBucket(a); })); generalMessageListener = Pipes.RegisterListener<GeneralMessage>(GeneralMessage.PIPE_NAME, new Listener<GeneralMessage>(a => PrintMessage(a.Message))); requestListener = Pipes.RegisterListener<IterativeLookupRequest>(IterativeLookupRequest.PIPE_NAME, new Listener<IterativeLookupRequest>(a => lookupStartQueue.Enqueue(a))); stepListener = Pipes.RegisterListener<IterativeLookupStep>(IterativeLookupStep.PIPE_NAME, new Listener<IterativeLookupStep>(a => lookupStepQueue.Enqueue(a))); requestCompleteListener = Pipes.RegisterListener<IterativeLookupComplete>(IterativeLookupComplete.PIPE_NAME, new Listener<IterativeLookupComplete>(a => lookupEndQueue.Enqueue(a))); clearListener = Pipes.RegisterListener<ClearQueries>(ClearQueries.PIPE_NAME, new Listener<ClearQueries>(a => { ClearQuerySet(); })); }
public void Stress(string name) { for (int j = 0; j < 10; j++) { int times = 10; int close_cb_called = 0; int cl_send_cb_called = 0; int cl_recv_cb_called = 0; int sv_send_cb_called = 0; int sv_recv_cb_called = 0; var server = new PipeListener(); server.Bind(name); server.Connection += () => { var pipe = server.Accept(); pipe.Resume(); pipe.Read(Encoding.ASCII, (str) => { sv_recv_cb_called++; Assert.AreEqual(Times("PING", times), str); for (int i = 0; i < times; i++) { pipe.Write(Encoding.ASCII, "PONG", (s) => { sv_send_cb_called++; }); } pipe.Close(() => { close_cb_called++; }); server.Close(() => { close_cb_called++; }); }); }; server.Listen(); Pipe client = new Pipe(); client.Connect(name, (_) => { client.Resume(); for (int i = 0; i < times; i++) { client.Write(Encoding.ASCII, "PING", (s) => { cl_send_cb_called++; }); } client.Read(Encoding.ASCII, (str) => { cl_recv_cb_called++; Assert.AreEqual(Times("PONG", times), str); client.Close(() => { close_cb_called++; }); }); }); Assert.AreEqual(0, close_cb_called); Assert.AreEqual(0, cl_send_cb_called); Assert.AreEqual(0, cl_recv_cb_called); Assert.AreEqual(0, sv_send_cb_called); Assert.AreEqual(0, sv_recv_cb_called); Loop.Default.Run(); Assert.AreEqual(3, close_cb_called); Assert.AreEqual(times, cl_send_cb_called); Assert.AreEqual(1, cl_recv_cb_called); Assert.AreEqual(times, sv_send_cb_called); Assert.AreEqual(1, sv_recv_cb_called); #if DEBUG Assert.AreEqual(1, UV.PointerCount); #endif } }