Пример #1
0
        static void OnCallback(IntPtr s, int type, IntPtr address, IntPtr data, IntPtr info)
        {
            var socket = GCHandle.FromIntPtr(info).Target as CFSocket;
            CFSocketCallBackType cbType = (CFSocketCallBackType)type;

            if (cbType == CFSocketCallBackType.AcceptCallBack)
            {
                var ep     = CFSocketAddress.EndPointFromAddressPtr(address);
                var handle = new CFSocketNativeHandle(Marshal.ReadInt32(data));
                socket.OnAccepted(new CFSocketAcceptEventArgs(handle, ep));
            }
            else if (cbType == CFSocketCallBackType.ConnectCallBack)
            {
                CFSocketError result;
                if (data == IntPtr.Zero)
                {
                    result = CFSocketError.Success;
                }
                else
                {
                    result = (CFSocketError)Marshal.ReadInt32(data);
                }
                socket.OnConnect(new CFSocketConnectEventArgs(result));
            }
        }
Пример #2
0
        static void OnCallback(IntPtr s, nuint type, IntPtr address, IntPtr data, IntPtr info)
        {
            var socket = GCHandle.FromIntPtr(info).Target as CFSocket;

            if (socket is null)
            {
                return;
            }
            CFSocketCallBackType cbType = (CFSocketCallBackType)(ulong)type;

            if (cbType == CFSocketCallBackType.AcceptCallBack)
            {
                var ep     = CFSocketAddress.EndPointFromAddressPtr(address);
                var handle = new CFSocketNativeHandle(Marshal.ReadInt32(data));
                socket.OnAccepted(new CFSocketAcceptEventArgs(handle, ep));
            }
            else if (cbType == CFSocketCallBackType.ConnectCallBack)
            {
                CFSocketError result;
                if (data == IntPtr.Zero)
                {
                    result = CFSocketError.Success;
                }
                else
                {
                    // Note that we read a 32bit value even if CFSocketError is a nint:
                    // 'or a pointer to an SInt32 error code if the connect failed.'
                    result = (CFSocketError)Marshal.ReadInt32(data);
                }
                socket.OnConnect(new CFSocketConnectEventArgs(result));
            }
            else if (cbType == CFSocketCallBackType.DataCallBack)
            {
                var ep = CFSocketAddress.EndPointFromAddressPtr(address);
                using (var cfdata = new CFData(data, false))
                    socket.OnData(new CFSocketDataEventArgs(ep, cfdata.GetBuffer()));
            }
            else if (cbType == CFSocketCallBackType.NoCallBack)
            {
                // nothing to do
            }
            else if (cbType == CFSocketCallBackType.ReadCallBack)
            {
                socket.OnRead(new CFSocketReadEventArgs());
            }
            else if (cbType == CFSocketCallBackType.WriteCallBack)
            {
                socket.OnWrite(new CFSocketWriteEventArgs());
            }
        }
Пример #3
0
 public void EnableCallBacks(CFSocketCallBackType types)
 {
     CFSocketEnableCallBacks(Handle, types);
 }
Пример #4
0
 extern static void CFSocketEnableCallBacks(IntPtr handle, CFSocketCallBackType types);
Пример #5
0
 extern static IntPtr CFSocketCreateConnectedToSocketSignature(IntPtr allocator, ref CFSocketSignature signature,
                                                               CFSocketCallBackType callBackTypes,
                                                               CFSocketCallBack callout,
                                                               IntPtr context, double timeout);
Пример #6
0
 extern static IntPtr CFSocketCreateWithNative(IntPtr allocator, CFSocketNativeHandle sock,
                                               CFSocketCallBackType callBackTypes,
                                               CFSocketCallBack callout, IntPtr ctx);
Пример #7
0
 extern static IntPtr CFSocketCreate(IntPtr allocator, int family, int type, int proto,
                                     CFSocketCallBackType callBackTypes,
                                     CFSocketCallBack callout, IntPtr ctx);
Пример #8
0
 public void DisableCallBacks(CFSocketCallBackType types)
 {
     CFSocketDisableCallBacks(handle, (nuint)(ulong)types);
 }
Пример #9
0
		extern static void CFSocketEnableCallBacks (IntPtr handle, CFSocketCallBackType types);
Пример #10
0
		extern static IntPtr CFSocketCreateConnectedToSocketSignature (IntPtr allocator, ref CFSocketSignature signature,
		                                                               CFSocketCallBackType callBackTypes,
		                                                               CFSocketCallBack callout,
		                                                               IntPtr context, double timeout);
Пример #11
0
		extern static IntPtr CFSocketCreateWithNative (IntPtr allocator, CFSocketNativeHandle sock,
		                                               CFSocketCallBackType callBackTypes,
		                                               CFSocketCallBack callout, IntPtr ctx);
Пример #12
0
		extern static IntPtr CFSocketCreate (IntPtr allocator, int family, int type, int proto,
		                                     CFSocketCallBackType callBackTypes,
		                                     CFSocketCallBack callout, IntPtr ctx);
Пример #13
0
 public void DisableCallBacks(CFSocketCallBackType types)
 {
     CFSocketDisableCallBacks(handle, types);
 }
Пример #14
0
		public void DisableCallBacks (CFSocketCallBackType types)
		{
			CFSocketDisableCallBacks (Handle, types);
		}
Пример #15
0
 static extern void CFSocketDisableCallBacks(IntPtr handle, CFSocketCallBackType types);
Пример #16
0
		public void EnableCallBacks (CFSocketCallBackType types)
		{
			CFSocketEnableCallBacks (handle, types);
		}
Пример #17
0
 public void EnableCallBacks(CFSocketCallBackType types)
 {
     CFSocketEnableCallBacks(Handle, (nuint)(ulong)types);
 }
Пример #18
0
 public void EnableCallBacks(CFSocketCallBackType types)
 {
     CFSocketEnableCallBacks (handle, (nuint) (ulong) types);
 }