public void Send(ByteBuffer data) { if (_disconnected) throw new SocketException((int)SocketError.NotConnected); var vuLen = PackUnpack.LengthVUInt((uint)data.Length); var vuBuf = new byte[vuLen]; int o = 0; PackUnpack.PackVUInt(vuBuf, ref o, (uint)data.Length); SocketError socketError; lock (_sendlock) { _socket.Send(new[] { new ArraySegment<byte>(vuBuf), data.ToArraySegment() }, SocketFlags.None, out socketError); } if (socketError == SocketError.Success) return; if (!IsConnected()) { SignalDisconnected(); } throw new SocketException((int)socketError); }