private static TransportAsyncResult Perform(TransportAsyncWorker worker) { WaitCallback workItem; switch (worker._operation) { case OperationType.Connect: { workItem = new WaitCallback(worker.Connect); break; } case OperationType.Accept: { workItem = new WaitCallback(worker.Accept); break; } case OperationType.Send: { workItem = new WaitCallback(worker.Send); break; } case OperationType.Receive: { workItem = new WaitCallback(worker.Receive); break; } default: { throw new ArgumentException("Invalid operation type", "operation"); } } // start worker thread ThreadPool.QueueUserWorkItem(workItem); return(worker._result); }
private static TransportAsyncResult Perform(TransportAsyncWorker worker) { WaitCallback workItem; switch (worker._operation) { case OperationType.Connect: { workItem = worker.Connect; break; } case OperationType.Accept: { workItem = worker.Accept; break; } case OperationType.Send: { workItem = worker.Send; break; } case OperationType.Receive: { workItem = worker.Receive; break; } default: { throw new ArgumentException("Invalid operation type", "operation"); } } // start worker thread ThreadPool.QueueUserWorkItem(workItem); return worker._result; }
public TransportAsyncResult(TransportAsyncWorker worker, object state) { _state = state; _worker = worker; }
public IAsyncResult BeginSend(byte[] buffer, int offset, int size, AsyncCallback callback, object state) { return(TransportAsyncWorker.Perform(_transport, TransportAsyncWorker.OperationType.Send, buffer, offset, size, callback, state)); }
public IAsyncResult BeginAccept(AsyncCallback callback, object state) { return(TransportAsyncWorker.Perform(_transport, TransportAsyncWorker.OperationType.Accept, callback, state)); }
public IAsyncResult BeginConnect(string url, AsyncCallback callback, object state) { return(TransportAsyncWorker.Perform(_transport, TransportAsyncWorker.OperationType.Connect, url, callback, state)); }