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); } }
public Libuv() { IsWindows = PlatformApis.IsWindows(); if (!IsWindows) { IsDarwin = PlatformApis.IsDarwin(); } }
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); } }
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; } }
public Libuv() { IsWindows = PlatformApis.IsWindows(); }