コード例 #1
0
ファイル: ServerStream.cs プロジェクト: wazazhang/NetUV
        static void OnConnectionCallback(IntPtr handle, int status)
        {
            var server = HandleContext.GetTarget <ServerStream>(handle);

            if (server == null)
            {
                return;
            }

            StreamHandle client = null;
            Exception    error  = null;

            try
            {
                if (status < 0)
                {
                    error = NativeMethods.CreateError((uv_err_code)status);
                }
                else
                {
                    client = server.NewStream();
                }

                server.connectionHandler(client, error);
            }
            catch
            {
                client?.Dispose();
                throw;
            }
        }
コード例 #2
0
ファイル: ServerStream.cs プロジェクト: PlumpMath/NetUV
        static void OnConnectionCallback(IntPtr handle, int status)
        {
            var server = HandleContext.GetTarget <ServerStream>(handle);

            if (server == null)
            {
                return;
            }

            StreamHandle client = null;
            Exception    error  = null;

            try
            {
                if (status < 0)
                {
                    error = NativeMethods.CreateError((uv_err_code)status);
                }
                else
                {
                    client = server.NewStream();
                    if (client == null)
                    {
                        throw new InvalidOperationException(
                                  $"{server.HandleType} {server.InternalHandle} failed to create new client stream.");
                    }

                    NativeMethods.StreamAccept(server.InternalHandle, client.InternalHandle);
                    client.ReadStart();
                    Log.DebugFormat("{0} {1} client {2} accepted", server.HandleType, handle, client.InternalHandle);
                }

                server.connectionHandler(client, error);
            }
            catch
            {
                client?.Dispose();
                throw;
            }
        }