public void BlockOffset() { BlockStream s; BlockArray ba; s = new BlockStream(0, 10, 5); for (int i = 0; i < 20; i++) { s.WriteByte((byte)i); } ba = s.ToBlocks(false); Assert.Equal(4, ba.Count); for (int i = 0; i < ba.Count; i++) { Block b = ba.GetBlock(i); Assert.Equal(5, b.Length); Assert.Equal(5, b.Offset); for (int j = 0; j < 5; j++) { Assert.Equal(i * 5 + j, (int)b.Buffer[b.Offset + j]); } } }
/// <summary> /// Serializes the request/response line and headers into a binary /// form suitiable for network transmission. /// </summary> /// <param name="blockSize">Size of the underlying blocks.</param> /// <returns>The request as a block array.</returns> internal BlockArray Serialize(int blockSize) { var bs = new BlockStream(0, blockSize); var writer = new StreamWriter(bs); if (isRequest) { writer.Write("{0} {1} HTTP/{2}.{3}\r\n", method, rawUri, version.Major, version.Major); } else { writer.Write("HTTP/{0}.{1} {2} {3}\r\n", version.Major, version.Major, (int)status, reason); } foreach (HttpHeader header in headers.Values) { writer.Write("{0}: {1}\r\n", header.Name, header.Value); } writer.Write("\r\n"); writer.Flush(); return(bs.ToBlocks(true)); }
public HttpResponse OnRequest(HttpServer server, HttpRequest request, bool newCon, out bool close) { HttpResponse response = new HttpResponse(HttpStatus.OK, "OK"); BlockStream bs = new BlockStream(0, 4096); TextWriter writer = new StreamWriter(bs, Encoding.ASCII); writer.Write(request["Response"]); writer.Flush(); response.Content = bs.ToBlocks(true); server.AddDefaultHeaders(response); close = request["Close"] != null && request["Close"].ToUpper() == "YES"; return(response); }
public HttpResponse OnRequest(HttpServer server, HttpRequest request, bool newCon, out bool close) { HttpResponse response = new HttpResponse(HttpStatus.OK, "OK"); BlockStream bs = new BlockStream(0, 4096); TextWriter writer = new StreamWriter(bs, Encoding.ASCII); writer.WriteLine("<html>"); writer.WriteLine("<head><title>Hello World!</title></head>"); writer.WriteLine("<body>"); writer.WriteLine("<h1>Hello World!</h1>"); writer.WriteLine("</body>"); writer.WriteLine("</html>"); writer.Flush(); response.Content = bs.ToBlocks(true); server.AddDefaultHeaders(response); response["Content-Type"] = "text/html"; close = true; return(response); }