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);
}