1
0
mirror of https://github.com/lidgren/lidgren-network-gen3.git synced 2026-05-06 02:11:06 +09:00
Files
lidgren-network-gen3/Lidgren.Network/NetIncomingMessage.Stream.cs
2010-08-17 11:01:02 +00:00

66 lines
1.5 KiB
C#

using System;
using System.IO;
namespace Lidgren.Network
{
public partial class NetIncomingMessage : Stream
{
public override bool CanRead { get { return true; } }
public override bool CanSeek { get { return true; } }
public override bool CanWrite { get { return false; } }
public override void Flush()
{
// no op
}
/// <summary>
/// Gets the length in bytes
/// </summary>
public override long Length
{
get { return LengthBytes; }
}
public override int Read(byte[] buffer, int offset, int count)
{
// limit amount to remaining
int remainingBytes = NetUtility.BytesToHoldBits(m_bitLength - m_readPosition);
if (count > remainingBytes)
count = remainingBytes;
if (count < 1)
return 0;
ReadBytes(buffer, offset, count);
return count;
}
/// <summary>
/// Sets the position in the stream, in bytes
/// </summary>
public override long Seek(long offset, SeekOrigin origin)
{
switch (origin)
{
case SeekOrigin.Begin:
Position = (offset * 8);
break;
case SeekOrigin.Current:
Position = Position + (offset * 8);
break;
case SeekOrigin.End:
Position = (LengthBytes - offset) * 8;
break;
default:
throw new NotImplementedException("Bad SeekOrigin");
}
return Position;
}
public override void SetLength(long value)
{
throw new NetException("It's not possible to set the length of the NetIncomingMessage");
}
}
}