Пример #1
0
        public void Load(string dllToLoad)
        {
            PlatformApis.Apply(this);

            var module = LoadLibrary(dllToLoad);

            if (module == IntPtr.Zero)
            {
                var message = "Unable to load libuv.";
                if (!IsWindows && !IsDarwin)
                {
                    // *nix box, so libuv needs to be installed
                    // TODO: fwlink?
                    message += " Make sure libuv is installed and available as libuv.so.1";
                }

                throw new InvalidOperationException(message);
            }

            foreach (var field in GetType().GetTypeInfo().DeclaredFields)
            {
                var procAddress = GetProcAddress(module, field.Name.TrimStart('_'));
                if (procAddress == IntPtr.Zero)
                {
                    continue;
                }
                var value = Marshal.GetDelegateForFunctionPointer(procAddress, field.FieldType);
                field.SetValue(this, value);
            }
        }
Пример #2
0
 public Libuv()
 {
     IsWindows = PlatformApis.IsWindows();
     if (!IsWindows)
     {
         IsDarwin = PlatformApis.IsDarwin();
     }
 }
Пример #3
0
        public void Load(string dllToLoad)
        {
            PlatformApis.Apply(this);

            var module = LoadLibrary(dllToLoad);

            foreach (var field in GetType().GetTypeInfo().DeclaredFields)
            {
                var procAddress = GetProcAddress(module, field.Name.TrimStart('_'));
                if (procAddress == IntPtr.Zero)
                {
                    continue;
                }
                var value = Marshal.GetDelegateForFunctionPointer(procAddress, field.FieldType);
                field.SetValue(this, value);
            }
        }
Пример #4
0
        public Libuv()
        {
            IsWindows = PlatformApis.IsWindows();

            var isDarwinMono =
#if DNX451
                IsWindows ? false : PlatformApis.IsDarwin();
#else
                false;
#endif

            if (isDarwinMono)
            {
                _uv_loop_init          = NativeDarwinMonoMethods.uv_loop_init;
                _uv_loop_close         = NativeDarwinMonoMethods.uv_loop_close;
                _uv_run                = NativeDarwinMonoMethods.uv_run;
                _uv_stop               = NativeDarwinMonoMethods.uv_stop;
                _uv_ref                = NativeDarwinMonoMethods.uv_ref;
                _uv_unref              = NativeDarwinMonoMethods.uv_unref;
                _uv_close              = NativeDarwinMonoMethods.uv_close;
                _uv_async_init         = NativeDarwinMonoMethods.uv_async_init;
                _uv_async_send         = NativeDarwinMonoMethods.uv_async_send;
                _uv_tcp_init           = NativeDarwinMonoMethods.uv_tcp_init;
                _uv_tcp_bind           = NativeDarwinMonoMethods.uv_tcp_bind;
                _uv_tcp_open           = NativeDarwinMonoMethods.uv_tcp_open;
                _uv_tcp_nodelay        = NativeDarwinMonoMethods.uv_tcp_nodelay;
                _uv_pipe_init          = NativeDarwinMonoMethods.uv_pipe_init;
                _uv_pipe_bind          = NativeDarwinMonoMethods.uv_pipe_bind;
                _uv_listen             = NativeDarwinMonoMethods.uv_listen;
                _uv_accept             = NativeDarwinMonoMethods.uv_accept;
                _uv_pipe_connect       = NativeDarwinMonoMethods.uv_pipe_connect;
                _uv_pipe_pending_count = NativeDarwinMonoMethods.uv_pipe_pending_count;
                _uv_read_start         = NativeDarwinMonoMethods.uv_read_start;
                _uv_read_stop          = NativeDarwinMonoMethods.uv_read_stop;
                _uv_try_write          = NativeDarwinMonoMethods.uv_try_write;
                unsafe
                {
                    _uv_write  = NativeDarwinMonoMethods.uv_write;
                    _uv_write2 = NativeDarwinMonoMethods.uv_write2;
                }
                _uv_shutdown    = NativeDarwinMonoMethods.uv_shutdown;
                _uv_err_name    = NativeDarwinMonoMethods.uv_err_name;
                _uv_strerror    = NativeDarwinMonoMethods.uv_strerror;
                _uv_loop_size   = NativeDarwinMonoMethods.uv_loop_size;
                _uv_handle_size = NativeDarwinMonoMethods.uv_handle_size;
                _uv_req_size    = NativeDarwinMonoMethods.uv_req_size;
                _uv_ip4_addr    = NativeDarwinMonoMethods.uv_ip4_addr;
                _uv_ip6_addr    = NativeDarwinMonoMethods.uv_ip6_addr;
                _uv_walk        = NativeDarwinMonoMethods.uv_walk;
            }
            else
            {
                _uv_loop_init          = NativeMethods.uv_loop_init;
                _uv_loop_close         = NativeMethods.uv_loop_close;
                _uv_run                = NativeMethods.uv_run;
                _uv_stop               = NativeMethods.uv_stop;
                _uv_ref                = NativeMethods.uv_ref;
                _uv_unref              = NativeMethods.uv_unref;
                _uv_close              = NativeMethods.uv_close;
                _uv_async_init         = NativeMethods.uv_async_init;
                _uv_async_send         = NativeMethods.uv_async_send;
                _uv_tcp_init           = NativeMethods.uv_tcp_init;
                _uv_tcp_bind           = NativeMethods.uv_tcp_bind;
                _uv_tcp_open           = NativeMethods.uv_tcp_open;
                _uv_tcp_nodelay        = NativeMethods.uv_tcp_nodelay;
                _uv_pipe_init          = NativeMethods.uv_pipe_init;
                _uv_pipe_bind          = NativeMethods.uv_pipe_bind;
                _uv_listen             = NativeMethods.uv_listen;
                _uv_accept             = NativeMethods.uv_accept;
                _uv_pipe_connect       = NativeMethods.uv_pipe_connect;
                _uv_pipe_pending_count = NativeMethods.uv_pipe_pending_count;
                _uv_read_start         = NativeMethods.uv_read_start;
                _uv_read_stop          = NativeMethods.uv_read_stop;
                _uv_try_write          = NativeMethods.uv_try_write;
                unsafe
                {
                    _uv_write  = NativeMethods.uv_write;
                    _uv_write2 = NativeMethods.uv_write2;
                }
                _uv_shutdown    = NativeMethods.uv_shutdown;
                _uv_err_name    = NativeMethods.uv_err_name;
                _uv_strerror    = NativeMethods.uv_strerror;
                _uv_loop_size   = NativeMethods.uv_loop_size;
                _uv_handle_size = NativeMethods.uv_handle_size;
                _uv_req_size    = NativeMethods.uv_req_size;
                _uv_ip4_addr    = NativeMethods.uv_ip4_addr;
                _uv_ip6_addr    = NativeMethods.uv_ip6_addr;
                _uv_walk        = NativeMethods.uv_walk;
            }
        }
Пример #5
0
 public Libuv()
 {
     IsWindows = PlatformApis.IsWindows();
 }