public void TestAddRemoveConnectionListener() { ConnectionListenerFunction callback = (uid, connected, conn) => { }; int id = CoreMethods.AddConnectionListener(callback, true); Assert.That(id, Is.Not.EqualTo(0)); CoreMethods.RemoveEntryListener(id); }
internal static int AddConnectionListener(ConnectionListenerFunction callback, bool immediateNotify) { Interop.NT_ConnectionListenerCallback modCallback = (uint uid, IntPtr data, int connected, ref NtConnectionInfo conn) => { string remoteName = ReadUTF8String(conn.RemoteName); ConnectionInfo info = new ConnectionInfo(conn.RemoteId.ToString(), remoteName, (int)conn.RemotePort, (long)conn.LastUpdate, (int)conn.ProtocolVersion); callback((int)uid, connected != 0, info); }; int retVal = (int)Interop.NT_AddConnectionListener(IntPtr.Zero, modCallback, immediateNotify ? 1 : 0); s_connectionCallbacks.Add(retVal, modCallback); return retVal; }
internal static int AddConnectionListener(ConnectionListenerFunction callback, bool immediateNotify) { Interop.NT_ConnectionListenerCallback modCallback = (uint uid, IntPtr data, int connected, ref NtConnectionInfo conn) => { string remoteName = ReadUTF8String(conn.RemoteName); ConnectionInfo info = new ConnectionInfo(conn.RemoteId.ToString(), remoteName, (int)conn.RemotePort, (long)conn.LastUpdate, (int)conn.ProtocolVersion); callback((int)uid, connected != 0, info); }; int retVal = (int)Interop.NT_AddConnectionListener(IntPtr.Zero, modCallback, immediateNotify ? 1 : 0); s_connectionCallbacks.Add(retVal, modCallback); return(retVal); }
/// <inheritdoc/> public void AddConnectionListener(Action <IRemote, ConnectionInfo, bool> listener, bool immediateNotify) { if (m_actionConnectionListenerMap.ContainsKey(listener)) { throw new ArgumentException("Cannot add the same listener twice", nameof(listener)); } ConnectionListenerFunction func = (uid, connected, conn) => { listener(this, conn, connected); }; int id = CoreMethods.AddConnectionListener(func, immediateNotify); m_actionConnectionListenerMap.Add(listener, id); }
///<inheritdoc/> public void AddConnectionListener(IRemoteConnectionListener listener, bool immediateNotify) { if (m_connectionListenerMap.ContainsKey(listener)) { throw new ArgumentException("Cannot add the same listener twice", nameof(listener)); } ConnectionListenerFunction func = (uid, connected, conn) => { if (connected) { listener.Connected(this, conn); } else { listener.Disconnected(this, conn); } }; int id = CoreMethods.AddConnectionListener(func, immediateNotify); m_connectionListenerMap.Add(listener, id); }