Beispiel #1
0
 /// <summary>
 /// 设置输出数据
 /// </summary>
 /// <param name="value"></param>
 /// <param name="isAscii"></param>
 /// <param name="encoding"></param>
 internal unsafe void SetBody(string value, bool isAscii, ref EncodingCache encoding)
 {
     if (value.Length == 0)
     {
         SetBody();
     }
     else
     {
         freeBody();
         if (isAscii && encoding.IsCompatibleAscii != 0)
         {
             int size = value.Length;
             AutoCSer.SubBuffer.Pool.GetBuffer(ref SubBuffer, size);
             fixed(char *textFixed = value)
             fixed(byte *bufferFixed = SubBuffer.GetFixedBuffer())
             {
                 if (SubBuffer.PoolBuffer.Pool == null)
                 {
                     Body.Array = SubBuffer.Buffer;
                     AutoCSer.Extensions.StringExtension.WriteBytes(textFixed, size, bufferFixed);
                     SubBuffer.Buffer = null;
                     Type             = ResponseType.ByteArray;
                 }
                 else
                 {
                     Body.Set(SubBuffer.Buffer, SubBuffer.StartIndex, size);
                     AutoCSer.Extensions.StringExtension.WriteBytes(textFixed, size, bufferFixed + Body.Start);
                     Type = ResponseType.SubBuffer;
                 }
             }
         }
         else
         {
             int size = encoding.GetByteCountNotNull(value);
             AutoCSer.SubBuffer.Pool.GetBuffer(ref SubBuffer, size);
             if (SubBuffer.PoolBuffer.Pool == null)
             {
                 encoding.WriteBytesNotEmpty(value, Body.Array = SubBuffer.Buffer);
                 SubBuffer.Buffer = null;
                 Type             = ResponseType.ByteArray;
             }
             else
             {
                 Body.Set(SubBuffer.Buffer, SubBuffer.StartIndex, size);
                 encoding.WriteBytesNotEmpty(value, Body.Array, Body.Start);
                 Type = ResponseType.SubBuffer;
             }
         }
     }
 }
Beispiel #2
0
 public void Write(AutoCSer.WebView.HashUrl url)
 {
     Encoding.WriteBytes(url.Path, Stream);
     if (!string.IsNullOrEmpty(url.Query))
     {
         Encoding.WriteUrlHash(Stream);
         Encoding.WriteBytesNotEmpty(url.Query, Stream);
     }
 }
 internal void WriteNotPool(string value, byte[] buffer, ref EncodingCache encoding)
 {
     Buffer.Set(buffer, 0);
     WriteIndex = encoding.WriteBytesNotEmpty(value, buffer);
     IsWait     = false;
 }
 internal void Write(string value, ref EncodingCache encoding)
 {
     WriteIndex += encoding.WriteBytesNotEmpty(value, Buffer.Buffer, WriteIndex);
 }