| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- using System;
- using System.IO;
- using System.Net.Sockets;
- class StateObject
- {
- public uint CmdId = 0;
- public uint BuffLength = 0;
- public uint BodyLength = 0;
- public byte[] buffer = new byte[Connector.RECV_BUFF_SIZE];
- public MemoryStream stream;
- public MemoryStream swapStream = null;
- //是否收到包体
- public bool ReceiveBody = false;
- public long StreamLength
- {
- get { return stream.Length; }
- }
- public long StreamPosition
- {
- set
- {
- stream.Position = value;
- }
- get
- {
- return stream.Position;
- }
- }
- public StateObject()
- {
- stream = new MemoryStream();
- swapStream = new MemoryStream();
- }
- public void Write(byte[] buffer, int len)
- {
- stream.Seek(0, SeekOrigin.End);
- stream.Write(buffer, 0, len);
- stream.Seek(0, SeekOrigin.Begin);
- }
- public void Read(byte[] bytes, int offset, int count)
- {
- stream.Read(bytes, offset, count);
- }
- public void Reset()
- {
- int remain_len = (int)(stream.Length - stream.Position);
- swapStream.Position = 0;
- swapStream.SetLength(0);
- if (remain_len != 0)
- {
- swapStream.Write(stream.GetBuffer(), (int)stream.Position, remain_len);
- swapStream.Flush();
- swapStream.Seek(0, SeekOrigin.Begin);
- }
- stream.Position = 0;
- stream.SetLength(0);
- swapStream.WriteTo(stream);
- stream.Flush();
- stream.Seek(0, SeekOrigin.Begin);
- CmdId = 0;
- BodyLength = 0;
- BuffLength = 0;
- ReceiveBody = false;
- }
- public void Dispose()
- {
- stream.Dispose();
- stream = null;
- swapStream.Dispose();
- swapStream = null;
- CmdId = 0;
- BodyLength = 0;
- BuffLength = 0;
- ReceiveBody = false;
- }
- }
|