コード例 #1
0
    private void OnAccept(Tcp client, ReadableBuffer data)
    {
        if (data.Count == 0)
        {
            log($"server OnAccept: data count is 0");
            return;
        }

        ////log($"server read {data.Count}");
        Interlocked.Increment(ref this.receiveCount);

        // Echo back
        var buffer = new byte[data.Count];

        data.ReadBytes(buffer, buffer.Length);
        data.Dispose();

        var writableBuffer = WritableBuffer.From(buffer);

        client.QueueWriteStream(
            writableBuffer,
            (streamHandle, exception) =>
        {
            writableBuffer.Dispose();
            if (exception != null)
            {
                log($"server write error: {exception.Message}");
                streamHandle.CloseHandle(h => h.Dispose());
            }
            else
            {
                client.OnRead(
                    this.OnAccept,
                    (_h, _e) => { log($"read error {_e.Message}"); });
            }
        });

        ////log($"server wrote {buffer.Length}");
    }
コード例 #2
0
    private void OnAccept(StreamHandle stream, ReadableBuffer data)
    {
        if (data.Count == 0)
        {
            log($"client OnAccept: data count is 0");
            return;
        }

        ////log($"client accept {data.Count}");

        // Echo back
        var buffer = new byte[data.Count];

        data.ReadBytes(buffer, buffer.Length);
        data.Dispose();

        var writableBuffer = WritableBuffer.From(buffer);

        stream.QueueWriteStream(
            writableBuffer,
            (handle, exception) =>
        {
            writableBuffer.Dispose();
            if (exception != null)
            {
                log($"client write error: {exception.Message}");
                handle.CloseHandle(h => h.Dispose());
            }
            else
            {
                stream.OnRead(
                    this.OnAccept,
                    (_h, _e) => { log($"read error {_e.Message}"); });
            }
        });

        ////log($"client wrote {buffer.Length}");
    }