async void Reader(NeoSocket neoSocket, AsyncQueue <byte[]> queue) { try { while (neoSocket.Connected) { var webRequest = await WebRequest.GetAsync(neoSocket); string localPath = webRequest.RequestUri.LocalPath; switch (localPath) { case "/": SendIndex(queue); break; case "/NeoRemote.apk": SendAPK(queue); break; case "/favicon.ico": SendFavicon(queue); break; case "/RunNeoRemote": await RunNeoRemote(neoSocket, queue); break; default: throw new Exception("Invalid query"); } } } catch { } neoSocket.Close(); queue.SetFinished(); }
async void Writer(NeoSocket neoSocket, AsyncQueue <byte[]> queue) { try { while (await queue.HasItemsAsync()) { var buffer = queue.Dequeue(); await neoSocket.WriteAsync(buffer, 0, buffer.Length); } } catch { queue.SetFinished(); } finally { neoSocket.Close(); } }