12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.IO;
- namespace OpenSim.Framework.Servers
- {
- public delegate string BinaryMethod(byte[] data, string path, string param);
- public class BinaryStreamHandler : BaseStreamHandler
- {
- BinaryMethod m_method;
- override public byte[] Handle(string path, Stream request)
- {
- byte[] data = ReadFully(request);
- string param = GetParam(path);
- string responseString = m_method(data, path, param);
-
- return Encoding.UTF8.GetBytes(responseString);
- }
- public BinaryStreamHandler(string httpMethod, string path, BinaryMethod binaryMethod)
- : base(httpMethod, path)
- {
- m_method = binaryMethod;
- }
- private byte[] ReadFully(Stream stream)
- {
- byte[] buffer = new byte[32768];
- using (MemoryStream ms = new MemoryStream())
- {
- while (true)
- {
- int read = stream.Read(buffer, 0, buffer.Length);
- if (read <= 0)
- {
- return ms.ToArray();
- }
-
- ms.Write(buffer, 0, read);
- }
- }
- }
- }
- }
|