private void DispatchBlock(StreamBlock block) { TRACE("DISPATCH BLOCK"); if (block == null) { block = outgoing_stream.Peek(); if (block == null) { return; } } switch (block.ContentType) { case StreamBlock.ContentTypes.StreamData: os_socket.BeginSend(block.Data, 0, block.TotalBytes, SocketFlags.None, SendAsyncResult, block); break; /*case StreamBlock.ContentTypes.OOBData: * os_socket.BeginSend(block.Data, 0, block.TotalBytes, SocketFlags.OutOfBand, * new AsyncCallback(SendAsyncResult), os_socket); * break;*/ case StreamBlock.ContentTypes.Disconnect: try { os_socket.Shutdown(SocketShutdown.Send); os_socket.Close(); } catch (ObjectDisposedException) { } break; } }