本文整理汇总了C#中Header.ESize方法的典型用法代码示例。如果您正苦于以下问题:C# Header.ESize方法的具体用法?C# Header.ESize怎么用?C# Header.ESize使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Header
的用法示例。
在下文中一共展示了Header.ESize方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Receive
public virtual byte[] Receive(out int length, out int actualLength)
{
byte[] result = null;
try
{
int headerLength=0;
int dataLength=0;
byte[] read1 = socket.Read(out headerLength);
readDuration = socket.ReadDuration;
byte[] read2 = new byte[0];
popper.OnAfterUncompress(read1, headerLength);
BinaryWriter bW = new BinaryWriter(mS);
bW.Write(read1, 0, headerLength);
Position = 0;
header = (Header) Get(header);
length = actualLength = headerLength+4;
if (header.MSize() > 0)
{
read2 = new byte[0];
read2 = socket.Read(out dataLength);
readDuration += socket.ReadDuration;
popper.OnBeforeUncompress(read2, dataLength);
actualLength += header.MSize()+4;
length += dataLength+4;
Position = 0;
if (header.MSize() > dataLength)
{
byte[] zBuff = new byte[header.MSize()];
int zLen = Rdc.Decompress(read2, dataLength, zBuff);
popper.OnAfterUncompress(zBuff, zLen);
bW.Write(zBuff, 0, zLen);
result = zBuff;
}
else
{
bW.Write(read2, 0, dataLength);
result = read2;
}
Position = 0;
}
if (header.ESize() > 0)
{
read2 = new byte[0];
read2 = socket.Read(out dataLength);
readDuration += socket.ReadDuration;
popper.OnBeforeUncompress(read2, dataLength);
actualLength += header.ESize()+4;
length += dataLength+4;
if (header.ESize() > dataLength)
{
byte[] zBuff = new byte[header.ESize()];
int zLen = Rdc.Decompress(read2, dataLength, zBuff);
popper.OnAfterUncompress(zBuff, zLen);
throw new RpcException(header.ReturnCode(), Encoding.Default.GetString(zBuff, 0, zLen));
}
else
throw new RpcException(header.ReturnCode(), Encoding.Default.GetString(read2, 0, dataLength));
}
if (header.ReturnCode() != 0)
throw new RpcException(header.ReturnCode());
}
catch (RpcException)
{
throw; // bounce this catch up
}
catch (Exception ex)
{
throw new RpcException("Error Reading from Server", ex);
}
return result;
}