static void OverrideSocketEvent(GLib.GType gtype, SocketEventNativeDelegate callback) { unsafe { IntPtr *raw_ptr = (IntPtr *)(((long)gtype.GetClassPtr()) + (long)class_abi.GetFieldOffset("event")); *raw_ptr = Marshal.GetFunctionPointerForDelegate((Delegate)callback); } }
private void InternalSocketEvent(GLib.SocketClientEvent evnt, GLib.ISocketConnectable connectable, GLib.IOStream connection) { SocketEventNativeDelegate unmanaged = class_abi.BaseOverride <SocketEventNativeDelegate>(this.LookupGType(), "event"); if (unmanaged == null) { return; } unmanaged(this.Handle, (int)evnt, connectable == null ? IntPtr.Zero : ((connectable is GLib.Object) ? (connectable as GLib.Object).Handle : (connectable as GLib.SocketConnectableAdapter).Handle), connection == null ? IntPtr.Zero : connection.Handle); }
private void InternalSocketEvent(out GLib.SocketListenerEvent evnt, GLib.Socket socket) { SocketEventNativeDelegate unmanaged = class_abi.BaseOverride <SocketEventNativeDelegate>(this.LookupGType(), "event"); if (unmanaged == null) { throw new InvalidOperationException("No base method to invoke"); } int native_evnt; unmanaged(this.Handle, out native_evnt, socket == null ? IntPtr.Zero : socket.Handle); evnt = (GLib.SocketListenerEvent)native_evnt; }