/// <summary> /// 加载LibUv程序集 /// </summary> /// <returns></returns> private static bool LoadLibuv() { libUv = new LibUv(); string libuvPath = Path.Combine(ApplicationInfo.AppPtah, "runtime", "native", "libuv"); if (libUv.IsWindows) { libuvPath = Path.Combine(libuvPath, "win", (IntPtr.Size == 4) ? "x32" : "x64", "libuv.dll"); } else if (libUv.IsDarwin)//MacOSX { libuvPath = Path.Combine(libuvPath, "oth", "libuv.dylib"); } else { libuvPath = Path.Combine(libuvPath, "lin", (IntPtr.Size == 4) ? "x32" : "x64", "libuv.so.1"); } if (!File.Exists(libuvPath)) { Console.WriteLine("*** Error: Can not found:{0}", libuvPath); return(false); } try { libUv.Initialization(libuvPath); } catch (Exception ex) { Console.WriteLine("*** Error: Load libuv failed! ***"); Console.WriteLine(ex.Message); return(false); } return(true); }
public static void Init(LibUv b1) { if (b1.IsWindows) { InitLibWindows.InitLib(b1); return; } InitLibUnix.InitLib(b1); }
public UvLoopThread(LibUv libUv, string name, Action <OwinSocket> owinHttpProcess) { if (libUv == null) { throw new ArgumentNullException("libuv"); } _libuv = libUv; _name = name; _owinHttpProcess = owinHttpProcess; _loopHandle = new LoopHandle(); _asyncHand1 = new AsyncHandle(); _asyncHand2 = new AsyncHandle(); _loopThread = new Thread(InitLoopThread); }
public Listener(LibUv libUv, string bindAddr, int bindPort, string tmpPath, Action <OwinSocket> owinHttpProcess) { if (libUv == null) { throw new ArgumentNullException("libuv"); } _libuv = libUv; _bindAddr = bindAddr; //绑定的ip _bindPort = bindPort; //绑定的端口 _tmpPath = tmpPath; _owinHttpProcess = owinHttpProcess; _loopHandle = new LoopHandle(); _asyncHand1 = new AsyncHandle(); _asyncHand2 = new AsyncHandle(); _loopThread = new Thread(InitLoopThread); }
public void PipeBind(string text) { LibUv.PipeBind(this, text); }
public int PipePendingCount() { return(LibUv.PipePendingCount(this)); }
/// <summary> /// Init /// </summary> /// <param name="loopHandle"></param> /// <param name="flag">若是 IPC 或命名管道,应该设置为 true</param> public void Init(LoopHandle loopHandle, bool flag = true) { Init(loopHandle.LibUv, loopHandle.LibUv.NamePipeHandleSize, loopHandle.LoopRunThreadId); LibUv.PipeInit(loopHandle, this, flag); }
public static void InitLib(LibUv libUv) { libUv.LoadLibrary = new Func <string, IntPtr>(LoadLibrary); libUv.FreeLibrary = new Func <IntPtr, bool>(FreeLibrary); libUv.GetProcAddress = new Func <IntPtr, string, IntPtr>(GetProcAddress); }