Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
 public static void Init(LibUv b1)
 {
     if (b1.IsWindows)
     {
         InitLibWindows.InitLib(b1);
         return;
     }
     InitLibUnix.InitLib(b1);
 }
Ejemplo n.º 3
0
 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);
 }
Ejemplo n.º 4
0
 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);
 }
Ejemplo n.º 5
0
 public void PipeBind(string text)
 {
     LibUv.PipeBind(this, text);
 }
Ejemplo n.º 6
0
 public int PipePendingCount()
 {
     return(LibUv.PipePendingCount(this));
 }
Ejemplo n.º 7
0
 /// <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);
 }
Ejemplo n.º 8
0
 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);
 }