Changes properties to use automatic property initializers

This commit is contained in:
Kamron Batman 2018-09-14 15:23:29 -07:00
parent f0a48ad431
commit 06fa31a7bf
623 changed files with 13072 additions and 19304 deletions

View file

@ -24,11 +24,7 @@ namespace Server.Network
{
public class BufferPool
{
private static List<BufferPool> m_Pools = new List<BufferPool>();
public static List<BufferPool> Pools{ get => m_Pools;
set => m_Pools = value;
}
public static List<BufferPool> Pools { get; set; } = new List<BufferPool>();
private string m_Name;
@ -64,8 +60,8 @@ namespace Server.Network
for ( int i = 0; i < initialCapacity; ++i )
m_FreeBuffers.Enqueue( new byte[bufferSize] );
lock ( m_Pools )
m_Pools.Add( this );
lock ( Pools )
Pools.Add( this );
}
public byte[] AcquireBuffer()
@ -95,8 +91,8 @@ namespace Server.Network
public void Free()
{
lock ( m_Pools )
m_Pools.Remove( this );
lock ( Pools )
Pools.Remove( this );
}
}
}

View file

@ -26,11 +26,10 @@ namespace Server.Network
{
private int m_Head;
private int m_Tail;
private int m_Size;
private byte[] m_Buffer;
public int Length => m_Size;
public int Length { get; private set; }
public ByteQueue()
{
@ -41,18 +40,18 @@ namespace Server.Network
{
m_Head = 0;
m_Tail = 0;
m_Size = 0;
Length = 0;
}
private void SetCapacity( int capacity )
{
byte[] newBuffer = new byte[capacity];
if ( m_Size > 0 )
if ( Length > 0 )
{
if ( m_Head < m_Tail )
{
Buffer.BlockCopy( m_Buffer, m_Head, newBuffer, 0, m_Size );
Buffer.BlockCopy( m_Buffer, m_Head, newBuffer, 0, Length );
}
else
{
@ -62,13 +61,13 @@ namespace Server.Network
}
m_Head = 0;
m_Tail = m_Size;
m_Tail = Length;
m_Buffer = newBuffer;
}
public byte GetPacketID()
{
if ( m_Size >= 1 )
if ( Length >= 1 )
return m_Buffer[m_Head];
return 0xFF;
@ -76,7 +75,7 @@ namespace Server.Network
public int GetPacketLength()
{
if ( m_Size >= 3 )
if ( Length >= 3 )
return (m_Buffer[(m_Head + 1) % m_Buffer.Length] << 8) | m_Buffer[(m_Head + 2) % m_Buffer.Length];
return 0;
@ -84,8 +83,8 @@ namespace Server.Network
public int Dequeue( byte[] buffer, int offset, int size )
{
if ( size > m_Size )
size = m_Size;
if ( size > Length )
size = Length;
if ( size == 0 )
return 0;
@ -110,9 +109,9 @@ namespace Server.Network
}
m_Head = ( m_Head + size ) % m_Buffer.Length;
m_Size -= size;
Length -= size;
if ( m_Size == 0 )
if ( Length == 0 )
{
m_Head = 0;
m_Tail = 0;
@ -123,8 +122,8 @@ namespace Server.Network
public void Enqueue( byte[] buffer, int offset, int size )
{
if ( (m_Size + size) > m_Buffer.Length )
SetCapacity( (m_Size + size + 2047) & ~2047 );
if ( (Length + size) > m_Buffer.Length )
SetCapacity( (Length + size + 2047) & ~2047 );
if ( m_Head < m_Tail )
{
@ -146,7 +145,7 @@ namespace Server.Network
}
m_Tail = ( m_Tail + size ) % m_Buffer.Length;
m_Size += size;
Length += size;
}
}
}

View file

@ -24,21 +24,17 @@ namespace Server.Network
public class EncodedPacketHandler
{
private int m_PacketID;
private bool m_Ingame;
private OnEncodedPacketReceive m_OnReceive;
public EncodedPacketHandler( int packetID, bool ingame, OnEncodedPacketReceive onReceive )
{
m_PacketID = packetID;
m_Ingame = ingame;
m_OnReceive = onReceive;
PacketID = packetID;
Ingame = ingame;
OnReceive = onReceive;
}
public int PacketID => m_PacketID;
public int PacketID { get; }
public OnEncodedPacketReceive OnReceive => m_OnReceive;
public OnEncodedPacketReceive OnReceive { get; }
public bool Ingame => m_Ingame;
public bool Ingame { get; }
}
}

View file

@ -43,12 +43,7 @@ namespace Server.Network
private static Socket[] m_EmptySockets = new Socket[0];
private static IPEndPoint[] m_EndPoints;
public static IPEndPoint[] EndPoints {
get => m_EndPoints;
set => m_EndPoints = value;
}
public static IPEndPoint[] EndPoints { get; set; }
public Listener( IPEndPoint ipep )
{

View file

@ -29,7 +29,6 @@ namespace Server.Network
{
public class MessagePump
{
private Listener[] m_Listeners;
private Queue<NetState> m_Queue;
private Queue<NetState> m_WorkingQueue;
private Queue<NetState> m_Throttled;
@ -38,7 +37,7 @@ namespace Server.Network
{
IPEndPoint[] ipep = Listener.EndPoints;
m_Listeners = new Listener[ipep.Length];
Listeners = new Listener[ipep.Length];
bool success = false;
@ -47,7 +46,7 @@ namespace Server.Network
Listener l = new Listener( ipep[i] );
if ( !success && l != null )
success = true;
m_Listeners[i] = l;
Listeners[i] = l;
}
if ( !success ) {
@ -61,29 +60,25 @@ namespace Server.Network
m_Throttled = new Queue<NetState>();
}
public Listener[] Listeners
{
get => m_Listeners;
set => m_Listeners = value;
}
public Listener[] Listeners { get; set; }
public void AddListener( Listener l )
{
Listener[] old = m_Listeners;
Listener[] old = Listeners;
m_Listeners = new Listener[old.Length + 1];
Listeners = new Listener[old.Length + 1];
for ( int i = 0; i < old.Length; ++i )
m_Listeners[i] = old[i];
Listeners[i] = old[i];
m_Listeners[old.Length] = l;
Listeners[old.Length] = l;
}
private void CheckListener()
{
for ( int j = 0; j < m_Listeners.Length; ++j )
for ( int j = 0; j < Listeners.Length; ++j )
{
Socket[] accepted = m_Listeners[j].Slice();
Socket[] accepted = Listeners[j].Slice();
for ( int i = 0; i < accepted.Length; ++i )
{

View file

@ -41,13 +41,8 @@ namespace Server.Network {
public delegate void NetStateCreatedCallback( NetState ns );
public class NetState : IComparable<NetState> {
private Socket m_Socket;
private IPAddress m_Address;
private ByteQueue m_Buffer;
private byte[] m_RecvBuffer;
private SendQueue m_SendQueue;
private bool m_Seeded;
private bool m_Running;
#if NewAsyncSockets
private SocketAsyncEventArgs m_ReceiveEventArgs, m_SendEventArgs;
@ -56,33 +51,17 @@ namespace Server.Network {
#endif
private MessagePump m_MessagePump;
private ServerInfo[] m_ServerInfo;
private IAccount m_Account;
private Mobile m_Mobile;
private CityInfo[] m_CityInfo;
private List<Gump> m_Gumps;
private List<HuePicker> m_HuePickers;
private List<IMenu> m_Menus;
private List<SecureTrade> m_Trades;
private int m_Sequence;
private bool m_CompressionEnabled;
private string m_ToString;
private ClientVersion m_Version;
private bool m_SentFirstPacket;
private bool m_BlockAllPackets;
private DateTime m_ConnectedOn;
public DateTime ConnectedOn { get; }
public DateTime ConnectedOn => m_ConnectedOn;
public TimeSpan ConnectedFor => ( DateTime.UtcNow - m_ConnectedOn );
public TimeSpan ConnectedFor => ( DateTime.UtcNow - ConnectedOn );
internal int m_Seed;
internal int m_AuthID;
public IPAddress Address => m_Address;
private ClientFlags m_Flags;
public IPAddress Address { get; }
private static bool m_Paused;
@ -95,34 +74,15 @@ namespace Server.Network {
private AsyncState m_AsyncState;
private object m_AsyncLock = new object();
private IPacketEncoder m_Encoder;
public IPacketEncoder PacketEncoder { get; set; }
public IPacketEncoder PacketEncoder {
get => m_Encoder;
set => m_Encoder = value;
}
public static NetStateCreatedCallback CreatedCallback { get; set; }
private static NetStateCreatedCallback m_CreatedCallback;
public bool SentFirstPacket { get; set; }
public static NetStateCreatedCallback CreatedCallback {
get => m_CreatedCallback;
set => m_CreatedCallback = value;
}
public bool BlockAllPackets { get; set; }
public bool SentFirstPacket {
get => m_SentFirstPacket;
set => m_SentFirstPacket = value;
}
public bool BlockAllPackets {
get => m_BlockAllPackets;
set => m_BlockAllPackets = value;
}
public ClientFlags Flags {
get => m_Flags;
set => m_Flags = value;
}
public ClientFlags Flags { get; set; }
public ClientVersion Version {
get => m_Version;
@ -225,19 +185,19 @@ namespace Server.Network {
public bool NewMobileIncoming => ((_ProtocolChanges & ProtocolChanges.NewMobileIncoming) != 0);
public bool NewSecureTrading => ((_ProtocolChanges & ProtocolChanges.NewSecureTrading) != 0);
public bool IsUOTDClient => ( (m_Flags & ClientFlags.UOTD) != 0 || ( m_Version != null && m_Version.Type == ClientType.UOTD ) );
public bool IsUOTDClient => ( (Flags & ClientFlags.UOTD) != 0 || ( m_Version != null && m_Version.Type == ClientType.UOTD ) );
public bool IsSAClient => ( m_Version != null && m_Version.Type == ClientType.SA );
public List<SecureTrade> Trades => m_Trades;
public List<SecureTrade> Trades { get; }
public void ValidateAllTrades() {
for ( int i = m_Trades.Count - 1; i >= 0; --i ) {
if ( i >= m_Trades.Count ) {
for ( int i = Trades.Count - 1; i >= 0; --i ) {
if ( i >= Trades.Count ) {
continue;
}
SecureTrade trade = m_Trades[i];
SecureTrade trade = Trades[i];
if ( trade.From.Mobile.Deleted || trade.To.Mobile.Deleted || !trade.From.Mobile.Alive || !trade.To.Mobile.Alive || !trade.From.Mobile.InRange( trade.To.Mobile, 2 ) || trade.From.Mobile.Map != trade.To.Mobile.Map ) {
trade.Cancel();
@ -246,20 +206,20 @@ namespace Server.Network {
}
public void CancelAllTrades() {
for ( int i = m_Trades.Count - 1; i >= 0; --i ) {
if ( i < m_Trades.Count ) {
m_Trades[i].Cancel();
for ( int i = Trades.Count - 1; i >= 0; --i ) {
if ( i < Trades.Count ) {
Trades[i].Cancel();
}
}
}
public void RemoveTrade( SecureTrade trade ) {
m_Trades.Remove( trade );
Trades.Remove( trade );
}
public SecureTrade FindTrade( Mobile m ) {
for ( int i = 0; i < m_Trades.Count; ++i ) {
SecureTrade trade = m_Trades[i];
for ( int i = 0; i < Trades.Count; ++i ) {
SecureTrade trade = Trades[i];
if ( trade.From.Mobile == m || trade.To.Mobile == m ) {
return trade;
@ -270,17 +230,17 @@ namespace Server.Network {
}
public SecureTradeContainer FindTradeContainer( Mobile m ) {
for ( int i = 0; i < m_Trades.Count; ++i ) {
SecureTrade trade = m_Trades[i];
for ( int i = 0; i < Trades.Count; ++i ) {
SecureTrade trade = Trades[i];
SecureTradeInfo from = trade.From;
SecureTradeInfo to = trade.To;
if ( from.Mobile == m_Mobile && to.Mobile == m ) {
if ( from.Mobile == Mobile && to.Mobile == m ) {
return from.Container;
}
if ( from.Mobile == m && to.Mobile == m_Mobile ) {
if ( from.Mobile == m && to.Mobile == Mobile ) {
return to.Container;
}
}
@ -289,46 +249,29 @@ namespace Server.Network {
}
public SecureTradeContainer AddTrade( NetState state ) {
SecureTrade newTrade = new SecureTrade( m_Mobile, state.m_Mobile );
SecureTrade newTrade = new SecureTrade( Mobile, state.Mobile );
m_Trades.Add( newTrade );
state.m_Trades.Add( newTrade );
Trades.Add( newTrade );
state.Trades.Add( newTrade );
return newTrade.From.Container;
}
public bool CompressionEnabled {
get => m_CompressionEnabled;
set => m_CompressionEnabled = value;
}
public bool CompressionEnabled { get; set; }
public int Sequence {
get => m_Sequence;
set => m_Sequence = value;
}
public int Sequence { get; set; }
public List<Gump> Gumps => m_Gumps;
public List<Gump> Gumps { get; private set; }
public List<HuePicker> HuePickers => m_HuePickers;
public List<HuePicker> HuePickers { get; private set; }
public List<IMenu> Menus => m_Menus;
public List<IMenu> Menus { get; private set; }
private static int m_GumpCap = 512, m_HuePickerCap = 512, m_MenuCap = 512;
public static int GumpCap { get; set; } = 512;
public static int GumpCap {
get => m_GumpCap;
set => m_GumpCap = value;
}
public static int HuePickerCap { get; set; } = 512;
public static int HuePickerCap {
get => m_HuePickerCap;
set => m_HuePickerCap = value;
}
public static int MenuCap {
get => m_MenuCap;
set => m_MenuCap = value;
}
public static int MenuCap { get; set; } = 512;
public void WriteConsole( string text ) {
Console.WriteLine( "Client: {0}: {1}", this, text );
@ -339,12 +282,12 @@ namespace Server.Network {
}
public void AddMenu( IMenu menu ) {
if ( m_Menus == null ) {
m_Menus = new List<IMenu>();
if ( Menus == null ) {
Menus = new List<IMenu>();
}
if ( m_Menus.Count < m_MenuCap ) {
m_Menus.Add( menu );
if ( Menus.Count < MenuCap ) {
Menus.Add( menu );
} else {
WriteConsole( "Exceeded menu cap, disconnecting..." );
Dispose();
@ -353,26 +296,26 @@ namespace Server.Network {
public void RemoveMenu( IMenu menu )
{
m_Menus?.Remove( menu );
Menus?.Remove( menu );
}
public void RemoveMenu( int index )
{
m_Menus?.RemoveAt( index );
Menus?.RemoveAt( index );
}
public void ClearMenus()
{
m_Menus?.Clear();
Menus?.Clear();
}
public void AddHuePicker( HuePicker huePicker ) {
if ( m_HuePickers == null ) {
m_HuePickers = new List<HuePicker>();
if ( HuePickers == null ) {
HuePickers = new List<HuePicker>();
}
if ( m_HuePickers.Count < m_HuePickerCap ) {
m_HuePickers.Add( huePicker );
if ( HuePickers.Count < HuePickerCap ) {
HuePickers.Add( huePicker );
} else {
WriteConsole( "Exceeded hue picker cap, disconnecting..." );
Dispose();
@ -381,26 +324,26 @@ namespace Server.Network {
public void RemoveHuePicker( HuePicker huePicker )
{
m_HuePickers?.Remove( huePicker );
HuePickers?.Remove( huePicker );
}
public void RemoveHuePicker( int index )
{
m_HuePickers?.RemoveAt( index );
HuePickers?.RemoveAt( index );
}
public void ClearHuePickers()
{
m_HuePickers?.Clear();
HuePickers?.Clear();
}
public void AddGump( Gump gump ) {
if ( m_Gumps == null ) {
m_Gumps = new List<Gump>();
if ( Gumps == null ) {
Gumps = new List<Gump>();
}
if ( m_Gumps.Count < m_GumpCap ) {
m_Gumps.Add( gump );
if ( Gumps.Count < GumpCap ) {
Gumps.Add( gump );
} else {
WriteConsole( "Exceeded gump cap, disconnecting..." );
Dispose();
@ -409,17 +352,17 @@ namespace Server.Network {
public void RemoveGump( Gump gump )
{
m_Gumps?.Remove( gump );
Gumps?.Remove( gump );
}
public void RemoveGump( int index )
{
m_Gumps?.RemoveAt( index );
Gumps?.RemoveAt( index );
}
public void ClearGumps()
{
m_Gumps?.Clear();
Gumps?.Clear();
}
public void LaunchBrowser( string url ) {
@ -427,80 +370,66 @@ namespace Server.Network {
Send( new LaunchBrowser( url ) );
}
public CityInfo[] CityInfo {
get => m_CityInfo;
set => m_CityInfo = value;
}
public CityInfo[] CityInfo { get; set; }
public Mobile Mobile {
get => m_Mobile;
set => m_Mobile = value;
}
public Mobile Mobile { get; set; }
public ServerInfo[] ServerInfo {
get => m_ServerInfo;
set => m_ServerInfo = value;
}
public ServerInfo[] ServerInfo { get; set; }
public IAccount Account {
get => m_Account;
set => m_Account = value;
}
public IAccount Account { get; set; }
public override string ToString() {
return m_ToString;
}
private static List<NetState> m_Instances = new List<NetState>();
public static List<NetState> Instances => m_Instances;
public static List<NetState> Instances { get; } = new List<NetState>();
private static BufferPool m_ReceiveBufferPool = new BufferPool( "Receive", 2048, 2048 );
public NetState( Socket socket, MessagePump messagePump )
{
m_Socket = socket;
m_Buffer = new ByteQueue();
m_Seeded = false;
m_Running = false;
Socket = socket;
Buffer = new ByteQueue();
Seeded = false;
Running = false;
m_RecvBuffer = m_ReceiveBufferPool.AcquireBuffer();
m_MessagePump = messagePump;
m_Gumps = new List<Gump>();
m_HuePickers = new List<HuePicker>();
m_Menus = new List<IMenu>();
m_Trades = new List<SecureTrade>();
Gumps = new List<Gump>();
HuePickers = new List<HuePicker>();
Menus = new List<IMenu>();
Trades = new List<SecureTrade>();
m_SendQueue = new SendQueue();
m_NextCheckActivity = Core.TickCount + 30000;
m_Instances.Add( this );
Instances.Add( this );
try {
m_Address = Utility.Intern( ( ( IPEndPoint ) m_Socket.RemoteEndPoint ).Address );
m_ToString = m_Address.ToString();
Address = Utility.Intern( ( ( IPEndPoint ) Socket.RemoteEndPoint ).Address );
m_ToString = Address.ToString();
} catch ( Exception ex ) {
TraceException( ex );
m_Address = IPAddress.None;
Address = IPAddress.None;
m_ToString = "(error)";
}
m_ConnectedOn = DateTime.UtcNow;
ConnectedOn = DateTime.UtcNow;
m_CreatedCallback?.Invoke( this );
CreatedCallback?.Invoke( this );
}
private bool _sending;
private object _sendL = new object();
public virtual void Send( Packet p ) {
if ( m_Socket == null || m_BlockAllPackets ) {
if ( Socket == null || BlockAllPackets ) {
p.OnSend();
return;
}
int length;
byte[] buffer = p.Compile( m_CompressionEnabled, out length );
byte[] buffer = p.Compile( CompressionEnabled, out length );
if ( buffer != null ) {
if ( buffer.Length <= 0 || length <= 0 ) {
@ -514,7 +443,7 @@ namespace Server.Network {
prof?.Start();
m_Encoder?.EncodeOutgoingPacket( this, ref buffer, ref length );
PacketEncoder?.EncodeOutgoingPacket( this, ref buffer, ref length );
try {
SendQueue.Gram gram;
@ -567,9 +496,9 @@ namespace Server.Network {
m_SendEventArgs = new SocketAsyncEventArgs();
m_SendEventArgs.Completed += Send_Completion;
m_Running = true;
Running = true;
if ( m_Socket == null || m_Paused ) {
if ( Socket == null || m_Paused ) {
return;
}
@ -585,7 +514,7 @@ namespace Server.Network {
lock ( m_AsyncLock ) {
if ( ( m_AsyncState & ( AsyncState.Pending | AsyncState.Paused ) ) == 0 ) {
m_AsyncState |= AsyncState.Pending;
result = !m_Socket.ReceiveAsync( m_ReceiveEventArgs );
result = !Socket.ReceiveAsync( m_ReceiveEventArgs );
if ( result )
Receive_Process( m_ReceiveEventArgs );
@ -602,7 +531,7 @@ namespace Server.Network {
{
Receive_Process( e );
if ( !m_Disposing )
if ( !IsDisposing )
Receive_Start();
}
@ -615,7 +544,7 @@ namespace Server.Network {
return;
}
if ( m_Disposing ) {
if ( IsDisposing ) {
return;
}
@ -623,10 +552,10 @@ namespace Server.Network {
byte[] buffer = m_RecvBuffer;
m_Encoder?.DecodeIncomingPacket( this, ref buffer, ref byteCount );
PacketEncoder?.DecodeIncomingPacket( this, ref buffer, ref byteCount );
lock ( m_Buffer )
m_Buffer.Enqueue( buffer, 0, byteCount );
lock ( Buffer )
Buffer.Enqueue( buffer, 0, byteCount );
m_MessagePump.OnReceive( this );
@ -641,7 +570,7 @@ namespace Server.Network {
bool result = false;
do {
result = !m_Socket.SendAsync( m_SendEventArgs );
result = !Socket.SendAsync( m_SendEventArgs );
if ( result )
Send_Process( m_SendEventArgs );
@ -656,11 +585,11 @@ namespace Server.Network {
{
Send_Process( e );
if ( m_Disposing )
if ( IsDisposing )
return;
if ( m_CoalesceSleep >= 0 ) {
Thread.Sleep( m_CoalesceSleep );
if ( CoalesceSleep >= 0 ) {
Thread.Sleep( CoalesceSleep );
}
SendQueue.Gram gram;
@ -696,8 +625,8 @@ namespace Server.Network {
public static void Pause() {
m_Paused = true;
for ( int i = 0; i < m_Instances.Count; ++i ) {
NetState ns = m_Instances[i];
for ( int i = 0; i < Instances.Count; ++i ) {
NetState ns = Instances[i];
lock ( ns.m_AsyncLock ) {
ns.m_AsyncState |= AsyncState.Paused;
@ -708,10 +637,10 @@ namespace Server.Network {
public static void Resume() {
m_Paused = false;
for ( int i = 0; i < m_Instances.Count; ++i ) {
NetState ns = m_Instances[i];
for ( int i = 0; i < Instances.Count; ++i ) {
NetState ns = Instances[i];
if ( ns.m_Socket == null ) {
if ( ns.Socket == null ) {
continue;
}
@ -725,7 +654,7 @@ namespace Server.Network {
}
public bool Flush() {
if ( m_Socket == null )
if ( Socket == null )
return false;
lock (_sendL) {
@ -939,25 +868,20 @@ namespace Server.Network {
}
public static void FlushAll() {
if (m_Instances.Count >= 1024)
Parallel.ForEach(m_Instances, ns => ns.Flush());
if (Instances.Count >= 1024)
Parallel.ForEach(Instances, ns => ns.Flush());
else
for ( int i = 0; i < m_Instances.Count; ++i ) {
m_Instances[i].Flush();
for ( int i = 0; i < Instances.Count; ++i ) {
Instances[i].Flush();
}
}
private static int m_CoalesceSleep = -1;
public static int CoalesceSleep {
get => m_CoalesceSleep;
set => m_CoalesceSleep = value;
}
public static int CoalesceSleep { get; set; } = -1;
private long m_NextCheckActivity;
public void CheckAlive(long curTicks) {
if ( m_Socket == null )
if ( Socket == null )
return;
if (m_NextCheckActivity - curTicks >= 0) {
@ -992,32 +916,30 @@ namespace Server.Network {
}
}
private bool m_Disposing;
public bool IsDisposing => m_Disposing;
public bool IsDisposing { get; private set; }
public void Dispose() {
Dispose( true );
}
public virtual void Dispose( bool flush ) {
if ( m_Socket == null || m_Disposing ) {
if ( Socket == null || IsDisposing ) {
return;
}
m_Disposing = true;
IsDisposing = true;
if ( flush )
flush = Flush();
try {
m_Socket.Shutdown( SocketShutdown.Both );
Socket.Shutdown( SocketShutdown.Both );
} catch ( SocketException ex ) {
TraceException( ex );
}
try {
m_Socket.Close();
Socket.Close();
} catch ( SocketException ex ) {
TraceException( ex );
}
@ -1027,9 +949,9 @@ namespace Server.Network {
m_ReceiveBufferPool.ReleaseBuffer( m_RecvBuffer );
}
m_Socket = null;
Socket = null;
m_Buffer = null;
Buffer = null;
m_RecvBuffer = null;
#if NewAsyncSockets
@ -1040,7 +962,7 @@ namespace Server.Network {
m_OnSend = null;
#endif
m_Running = false;
Running = false;
lock (m_Disposed)
m_Disposed.Enqueue( this );
@ -1059,11 +981,11 @@ namespace Server.Network {
try {
long curTicks = Core.TickCount;
if (m_Instances.Count >= 1024)
Parallel.ForEach(m_Instances, ns => ns.CheckAlive(curTicks));
if (Instances.Count >= 1024)
Parallel.ForEach(Instances, ns => ns.CheckAlive(curTicks));
else
for ( int i = 0; i < m_Instances.Count; ++i ) {
m_Instances[i].CheckAlive(curTicks);
for ( int i = 0; i < Instances.Count; ++i ) {
Instances[i].CheckAlive(curTicks);
}
} catch ( Exception ex ) {
TraceException( ex );
@ -1080,42 +1002,39 @@ namespace Server.Network {
++breakout;
NetState ns = m_Disposed.Dequeue();
Mobile m = ns.m_Mobile;
IAccount a = ns.m_Account;
Mobile m = ns.Mobile;
IAccount a = ns.Account;
if ( m != null ) {
m.NetState = null;
ns.m_Mobile = null;
ns.Mobile = null;
}
ns.m_Gumps.Clear();
ns.m_Menus.Clear();
ns.m_HuePickers.Clear();
ns.m_Account = null;
ns.m_ServerInfo = null;
ns.m_CityInfo = null;
ns.Gumps.Clear();
ns.Menus.Clear();
ns.HuePickers.Clear();
ns.Account = null;
ns.ServerInfo = null;
ns.CityInfo = null;
m_Instances.Remove( ns );
Instances.Remove( ns );
if ( a != null ) {
ns.WriteConsole( "Disconnected. [{0} Online] [{1}]", m_Instances.Count, a );
ns.WriteConsole( "Disconnected. [{0} Online] [{1}]", Instances.Count, a );
} else {
ns.WriteConsole( "Disconnected. [{0} Online]", m_Instances.Count );
ns.WriteConsole( "Disconnected. [{0} Online]", Instances.Count );
}
}
}
}
public bool Running => m_Running;
public bool Running { get; private set; }
public bool Seeded {
get => m_Seeded;
set => m_Seeded = value;
}
public bool Seeded { get; set; }
public Socket Socket => m_Socket;
public Socket Socket { get; private set; }
public ByteQueue Buffer => m_Buffer;
public ByteQueue Buffer { get; private set; }
public ExpansionInfo ExpansionInfo {
get {

View file

@ -25,32 +25,22 @@ namespace Server.Network
public class PacketHandler
{
private int m_PacketID;
private int m_Length;
private bool m_Ingame;
private OnPacketReceive m_OnReceive;
private ThrottlePacketCallback m_ThrottleCallback;
public PacketHandler( int packetID, int length, bool ingame, OnPacketReceive onReceive )
{
m_PacketID = packetID;
m_Length = length;
m_Ingame = ingame;
m_OnReceive = onReceive;
PacketID = packetID;
Length = length;
Ingame = ingame;
OnReceive = onReceive;
}
public int PacketID => m_PacketID;
public int PacketID { get; }
public int Length => m_Length;
public int Length { get; }
public OnPacketReceive OnReceive => m_OnReceive;
public OnPacketReceive OnReceive { get; }
public ThrottlePacketCallback ThrottleCallback
{
get => m_ThrottleCallback;
set => m_ThrottleCallback = value;
}
public ThrottlePacketCallback ThrottleCallback { get; set; }
public bool Ingame => m_Ingame;
public bool Ingame { get; }
}
}

View file

@ -55,7 +55,6 @@ namespace Server.Network
public static class PacketHandlers
{
private static PacketHandler[] m_Handlers;
private static PacketHandler[] m_6017Handlers;
private static PacketHandler[] m_ExtendedHandlersLow;
@ -64,11 +63,11 @@ namespace Server.Network
private static EncodedPacketHandler[] m_EncodedHandlersLow;
private static Dictionary<int, EncodedPacketHandler> m_EncodedHandlersHigh;
public static PacketHandler[] Handlers => m_Handlers;
public static PacketHandler[] Handlers { get; }
static PacketHandlers()
{
m_Handlers = new PacketHandler[0x100];
Handlers = new PacketHandler[0x100];
m_6017Handlers = new PacketHandler[0x100];
m_ExtendedHandlersLow = new PacketHandler[0x100];
@ -173,7 +172,7 @@ namespace Server.Network
public static void Register( int packetID, int length, bool ingame, OnPacketReceive onReceive )
{
m_Handlers[packetID] = new PacketHandler( packetID, length, ingame, onReceive );
Handlers[packetID] = new PacketHandler( packetID, length, ingame, onReceive );
if ( m_6017Handlers[packetID] == null )
m_6017Handlers[packetID] = new PacketHandler( packetID, length, ingame, onReceive );
@ -181,7 +180,7 @@ namespace Server.Network
public static PacketHandler GetHandler( int packetID )
{
return m_Handlers[packetID];
return Handlers[packetID];
}
public static void Register6017( int packetID, int length, bool ingame, OnPacketReceive onReceive )
@ -1467,13 +1466,7 @@ namespace Server.Network
}
}
private static bool m_SingleClickProps;
public static bool SingleClickProps
{
get => m_SingleClickProps;
set => m_SingleClickProps = value;
}
public static bool SingleClickProps { get; set; }
public static void LookReq( NetState state, PacketReader pvSrc )
{
@ -1487,7 +1480,7 @@ namespace Server.Network
if ( m != null && from.CanSee( m ) && Utility.InUpdateRange( from, m ) )
{
if ( m_SingleClickProps )
if ( SingleClickProps )
{
m.OnAosSingleClick( from );
}
@ -1504,7 +1497,7 @@ namespace Server.Network
if ( item != null && !item.Deleted && from.CanSee( item ) && Utility.InUpdateRange( from.Location, item.GetWorldLocation() ) )
{
if ( m_SingleClickProps )
if ( SingleClickProps )
{
item.OnAosSingleClick( from );
}
@ -2457,13 +2450,7 @@ namespace Server.Network
}
}
private static bool m_ClientVerification = true;
public static bool ClientVerification
{
get => m_ClientVerification;
set => m_ClientVerification = value;
}
public static bool ClientVerification { get; set; } = true;
internal struct AuthIDPersistence {
public DateTime Age;
@ -2525,7 +2512,7 @@ namespace Server.Network
m_AuthIDWindow.Remove( authID );
state.Version = ap.Version;
} else if ( m_ClientVerification ) {
} else if ( ClientVerification ) {
Console.WriteLine( "Login: {0}: Invalid client detected, disconnecting", state );
state.Dispose();
return;

View file

@ -26,20 +26,18 @@ namespace Server.Network
{
public class PacketReader
{
private byte[] m_Data;
private int m_Size;
private int m_Index;
public PacketReader( byte[] data, int size, bool fixedSize )
{
m_Data = data;
m_Size = size;
Buffer = data;
Size = size;
m_Index = fixedSize ? 1 : 3;
}
public byte[] Buffer => m_Data;
public byte[] Buffer { get; }
public int Size => m_Size;
public int Size { get; }
public void Trace( NetState state )
{
@ -47,7 +45,7 @@ namespace Server.Network
{
using ( StreamWriter sw = new StreamWriter( "Packets.log", true ) )
{
byte[] buffer = m_Data;
byte[] buffer = Buffer;
if ( buffer.Length > 0 )
sw.WriteLine( "Client: {0}: Unhandled packet 0x{1:X2}", state, buffer[0] );
@ -70,7 +68,7 @@ namespace Server.Network
{
case SeekOrigin.Begin: m_Index = offset; break;
case SeekOrigin.Current: m_Index += offset; break;
case SeekOrigin.End: m_Index = m_Size - offset; break;
case SeekOrigin.End: m_Index = Size - offset; break;
}
return m_Index;
@ -78,61 +76,61 @@ namespace Server.Network
public int ReadInt32()
{
if ( (m_Index + 4) > m_Size )
if ( (m_Index + 4) > Size )
return 0;
return (m_Data[m_Index++] << 24)
| (m_Data[m_Index++] << 16)
| (m_Data[m_Index++] << 8)
| m_Data[m_Index++];
return (Buffer[m_Index++] << 24)
| (Buffer[m_Index++] << 16)
| (Buffer[m_Index++] << 8)
| Buffer[m_Index++];
}
public short ReadInt16()
{
if ( (m_Index + 2) > m_Size )
if ( (m_Index + 2) > Size )
return 0;
return (short)((m_Data[m_Index++] << 8) | m_Data[m_Index++]);
return (short)((Buffer[m_Index++] << 8) | Buffer[m_Index++]);
}
public byte ReadByte()
{
if ( (m_Index + 1) > m_Size )
if ( (m_Index + 1) > Size )
return 0;
return m_Data[m_Index++];
return Buffer[m_Index++];
}
public uint ReadUInt32()
{
if ( (m_Index + 4) > m_Size )
if ( (m_Index + 4) > Size )
return 0;
return (uint)((m_Data[m_Index++] << 24) | (m_Data[m_Index++] << 16) | (m_Data[m_Index++] << 8) | m_Data[m_Index++]);
return (uint)((Buffer[m_Index++] << 24) | (Buffer[m_Index++] << 16) | (Buffer[m_Index++] << 8) | Buffer[m_Index++]);
}
public ushort ReadUInt16()
{
if ( (m_Index + 2) > m_Size )
if ( (m_Index + 2) > Size )
return 0;
return (ushort)((m_Data[m_Index++] << 8) | m_Data[m_Index++]);
return (ushort)((Buffer[m_Index++] << 8) | Buffer[m_Index++]);
}
public sbyte ReadSByte()
{
if ( (m_Index + 1) > m_Size )
if ( (m_Index + 1) > Size )
return 0;
return (sbyte)m_Data[m_Index++];
return (sbyte)Buffer[m_Index++];
}
public bool ReadBoolean()
{
if ( (m_Index + 1) > m_Size )
if ( (m_Index + 1) > Size )
return false;
return ( m_Data[m_Index++] != 0 );
return ( Buffer[m_Index++] != 0 );
}
public string ReadUnicodeStringLE()
@ -141,7 +139,7 @@ namespace Server.Network
int c;
while ( (m_Index + 1) < m_Size && (c = (m_Data[m_Index++] | (m_Data[m_Index++] << 8))) != 0 )
while ( (m_Index + 1) < Size && (c = (Buffer[m_Index++] | (Buffer[m_Index++] << 8))) != 0 )
sb.Append( (char)c );
return sb.ToString();
@ -152,14 +150,14 @@ namespace Server.Network
int bound = m_Index + (fixedLength << 1);
int end = bound;
if ( bound > m_Size )
bound = m_Size;
if ( bound > Size )
bound = Size;
StringBuilder sb = new StringBuilder();
int c;
while ( (m_Index + 1) < bound && (c = (m_Data[m_Index++] | (m_Data[m_Index++] << 8))) != 0 )
while ( (m_Index + 1) < bound && (c = (Buffer[m_Index++] | (Buffer[m_Index++] << 8))) != 0 )
{
if ( IsSafeChar( c ) )
sb.Append( (char)c );
@ -176,7 +174,7 @@ namespace Server.Network
int c;
while ( (m_Index + 1) < m_Size && (c = (m_Data[m_Index++] | (m_Data[m_Index++] << 8))) != 0 )
while ( (m_Index + 1) < Size && (c = (Buffer[m_Index++] | (Buffer[m_Index++] << 8))) != 0 )
{
if ( IsSafeChar( c ) )
sb.Append( (char)c );
@ -191,7 +189,7 @@ namespace Server.Network
int c;
while ( (m_Index + 1) < m_Size && (c = ((m_Data[m_Index++] << 8) | m_Data[m_Index++])) != 0 )
while ( (m_Index + 1) < Size && (c = ((Buffer[m_Index++] << 8) | Buffer[m_Index++])) != 0 )
{
if ( IsSafeChar( c ) )
sb.Append( (char)c );
@ -206,7 +204,7 @@ namespace Server.Network
int c;
while ( (m_Index + 1) < m_Size && (c = ((m_Data[m_Index++] << 8) | m_Data[m_Index++])) != 0 )
while ( (m_Index + 1) < Size && (c = ((Buffer[m_Index++] << 8) | Buffer[m_Index++])) != 0 )
sb.Append( (char)c );
return sb.ToString();
@ -219,7 +217,7 @@ namespace Server.Network
public string ReadUTF8StringSafe( int fixedLength )
{
if ( m_Index >= m_Size )
if ( m_Index >= Size )
{
m_Index += fixedLength;
return string.Empty;
@ -228,14 +226,14 @@ namespace Server.Network
int bound = m_Index + fixedLength;
//int end = bound;
if ( bound > m_Size )
bound = m_Size;
if ( bound > Size )
bound = Size;
int count = 0;
int index = m_Index;
int start = m_Index;
while ( index < bound && m_Data[index++] != 0 )
while ( index < bound && Buffer[index++] != 0 )
++count;
index = 0;
@ -243,7 +241,7 @@ namespace Server.Network
byte[] buffer = new byte[count];
int value = 0;
while ( m_Index < bound && (value = m_Data[m_Index++]) != 0 )
while ( m_Index < bound && (value = Buffer[m_Index++]) != 0 )
buffer[index++] = (byte)value;
string s = Utility.UTF8.GetString( buffer );
@ -269,13 +267,13 @@ namespace Server.Network
public string ReadUTF8StringSafe()
{
if ( m_Index >= m_Size )
if ( m_Index >= Size )
return string.Empty;
int count = 0;
int index = m_Index;
while ( index < m_Size && m_Data[index++] != 0 )
while ( index < Size && Buffer[index++] != 0 )
++count;
index = 0;
@ -283,7 +281,7 @@ namespace Server.Network
byte[] buffer = new byte[count];
int value = 0;
while ( m_Index < m_Size && (value = m_Data[m_Index++]) != 0 )
while ( m_Index < Size && (value = Buffer[m_Index++]) != 0 )
buffer[index++] = (byte)value;
string s = Utility.UTF8.GetString( buffer );
@ -309,13 +307,13 @@ namespace Server.Network
public string ReadUTF8String()
{
if ( m_Index >= m_Size )
if ( m_Index >= Size )
return string.Empty;
int count = 0;
int index = m_Index;
while ( index < m_Size && m_Data[index++] != 0 )
while ( index < Size && Buffer[index++] != 0 )
++count;
index = 0;
@ -323,7 +321,7 @@ namespace Server.Network
byte[] buffer = new byte[count];
int value = 0;
while ( m_Index < m_Size && (value = m_Data[m_Index++]) != 0 )
while ( m_Index < Size && (value = Buffer[m_Index++]) != 0 )
buffer[index++] = (byte)value;
return Utility.UTF8.GetString( buffer );
@ -335,7 +333,7 @@ namespace Server.Network
int c;
while ( m_Index < m_Size && (c = m_Data[m_Index++]) != 0 )
while ( m_Index < Size && (c = Buffer[m_Index++]) != 0 )
sb.Append( (char)c );
return sb.ToString();
@ -347,7 +345,7 @@ namespace Server.Network
int c;
while ( m_Index < m_Size && (c = m_Data[m_Index++]) != 0 )
while ( m_Index < Size && (c = Buffer[m_Index++]) != 0 )
{
if ( IsSafeChar( c ) )
sb.Append( (char)c );
@ -361,14 +359,14 @@ namespace Server.Network
int bound = m_Index + (fixedLength << 1);
int end = bound;
if ( bound > m_Size )
bound = m_Size;
if ( bound > Size )
bound = Size;
StringBuilder sb = new StringBuilder();
int c;
while ( (m_Index + 1) < bound && (c = ((m_Data[m_Index++] << 8) | m_Data[m_Index++])) != 0 )
while ( (m_Index + 1) < bound && (c = ((Buffer[m_Index++] << 8) | Buffer[m_Index++])) != 0 )
{
if ( IsSafeChar( c ) )
sb.Append( (char)c );
@ -384,14 +382,14 @@ namespace Server.Network
int bound = m_Index + (fixedLength << 1);
int end = bound;
if ( bound > m_Size )
bound = m_Size;
if ( bound > Size )
bound = Size;
StringBuilder sb = new StringBuilder();
int c;
while ( (m_Index + 1) < bound && (c = ((m_Data[m_Index++] << 8) | m_Data[m_Index++])) != 0 )
while ( (m_Index + 1) < bound && (c = ((Buffer[m_Index++] << 8) | Buffer[m_Index++])) != 0 )
sb.Append( (char)c );
m_Index = end;
@ -404,14 +402,14 @@ namespace Server.Network
int bound = m_Index + fixedLength;
int end = bound;
if ( bound > m_Size )
bound = m_Size;
if ( bound > Size )
bound = Size;
StringBuilder sb = new StringBuilder();
int c;
while ( m_Index < bound && (c = m_Data[m_Index++]) != 0 )
while ( m_Index < bound && (c = Buffer[m_Index++]) != 0 )
{
if ( IsSafeChar( c ) )
sb.Append( (char)c );
@ -427,14 +425,14 @@ namespace Server.Network
int bound = m_Index + fixedLength;
int end = bound;
if ( bound > m_Size )
bound = m_Size;
if ( bound > Size )
bound = Size;
StringBuilder sb = new StringBuilder();
int c;
while ( m_Index < bound && (c = m_Data[m_Index++]) != 0 )
while ( m_Index < bound && (c = Buffer[m_Index++]) != 0 )
sb.Append( (char)c );
m_Index = end;

View file

@ -477,12 +477,9 @@ namespace Server.Network
public class EquipInfoAttribute
{
private int m_Number;
private int m_Charges;
public int Number { get; }
public int Number => m_Number;
public int Charges => m_Charges;
public int Charges { get; }
public EquipInfoAttribute( int number ) : this( number, -1 )
{
@ -490,32 +487,27 @@ namespace Server.Network
public EquipInfoAttribute( int number, int charges )
{
m_Number = number;
m_Charges = charges;
Number = number;
Charges = charges;
}
}
public class EquipmentInfo
{
private int m_Number;
private Mobile m_Crafter;
private bool m_Unidentified;
private EquipInfoAttribute[] m_Attributes;
public int Number { get; }
public int Number => m_Number;
public Mobile Crafter { get; }
public Mobile Crafter => m_Crafter;
public bool Unidentified { get; }
public bool Unidentified => m_Unidentified;
public EquipInfoAttribute[] Attributes => m_Attributes;
public EquipInfoAttribute[] Attributes { get; }
public EquipmentInfo( int number, Mobile crafter, bool unidentified, EquipInfoAttribute[] attributes )
{
m_Number = number;
m_Crafter = crafter;
m_Unidentified = unidentified;
m_Attributes = attributes;
Number = number;
Crafter = crafter;
Unidentified = unidentified;
Attributes = attributes;
}
}
@ -2353,14 +2345,9 @@ namespace Server.Network
public sealed class DisplayGumpPacked : Packet, IGumpWriter
{
private int m_TextEntries, m_Switches;
public int TextEntries { get; set; }
public int TextEntries { get => m_TextEntries;
set => m_TextEntries = value;
}
public int Switches { get => m_Switches;
set => m_Switches = value;
}
public int Switches { get; set; }
private Gump m_Gump;
@ -2507,16 +2494,11 @@ namespace Server.Network
public sealed class DisplayGumpFast : Packet, IGumpWriter
{
private int m_TextEntries, m_Switches;
private int m_LayoutLength;
public int TextEntries{ get => m_TextEntries;
set => m_TextEntries = value;
}
public int Switches{ get => m_Switches;
set => m_Switches = value;
}
public int TextEntries { get; set; }
public int Switches { get; set; }
public DisplayGumpFast( Gump g ) : base( 0xB0 )
{
@ -2799,11 +2781,7 @@ namespace Server.Network
public sealed class SupportedFeatures : Packet
{
private static FeatureFlags m_AdditionalFlags;
public static FeatureFlags Value{ get => m_AdditionalFlags;
set => m_AdditionalFlags = value;
}
public static FeatureFlags Value { get; set; }
public static SupportedFeatures Instantiate( NetState ns )
{
@ -2814,7 +2792,7 @@ namespace Server.Network
{
FeatureFlags flags = ExpansionInfo.CoreExpansion.SupportedFeatures;
flags |= m_AdditionalFlags;
flags |= Value;
if ( ns.Account is IAccount acct && acct.Limit >= 6 )
{
@ -2837,27 +2815,16 @@ namespace Server.Network
public static class AttributeNormalizer
{
private static int m_Maximum = 25;
private static bool m_Enabled = true;
public static int Maximum { get; set; } = 25;
public static int Maximum
{
get => m_Maximum;
set => m_Maximum = value;
}
public static bool Enabled
{
get => m_Enabled;
set => m_Enabled = value;
}
public static bool Enabled { get; set; } = true;
public static void Write( PacketWriter stream, int cur, int max )
{
if ( m_Enabled && max != 0 )
if ( Enabled && max != 0 )
{
stream.Write( (short) m_Maximum );
stream.Write( (short) ((cur * m_Maximum) / max) );
stream.Write( (short) Maximum );
stream.Write( (short) ((cur * Maximum) / max) );
}
else
{
@ -2868,10 +2835,10 @@ namespace Server.Network
public static void WriteReverse( PacketWriter stream, int cur, int max )
{
if ( m_Enabled && max != 0 )
if ( Enabled && max != 0 )
{
stream.Write( (short) ((cur * m_Maximum) / max) );
stream.Write( (short) m_Maximum );
stream.Write( (short) ((cur * Maximum) / max) );
stream.Write( (short) Maximum );
}
else
{
@ -3857,19 +3824,15 @@ namespace Server.Network
public sealed class CityInfo
{
private string m_City;
private string m_Building;
private int m_Description;
private Point3D m_Location;
private Map m_Map;
public CityInfo( string city, string building, int description, int x, int y, int z, Map m )
{
m_City = city;
m_Building = building;
m_Description = description;
City = city;
Building = building;
Description = description;
m_Location = new Point3D( x, y, z );
m_Map = m;
Map = m;
}
public CityInfo( string city, string building, int x, int y, int z, Map m ) : this( city, building, 0, x, y, z, m )
@ -3884,23 +3847,11 @@ namespace Server.Network
{
}
public string City
{
get => m_City;
set => m_City = value;
}
public string City { get; set; }
public string Building
{
get => m_Building;
set => m_Building = value;
}
public string Building { get; set; }
public int Description
{
get => m_Description;
set => m_Description = value;
}
public int Description { get; set; }
public int X
{
@ -3926,11 +3877,7 @@ namespace Server.Network
set => m_Location = value;
}
public Map Map
{
get => m_Map;
set => m_Map = value;
}
public Map Map { get; set; }
}
public sealed class CharacterListUpdate : Packet
@ -4011,9 +3958,7 @@ namespace Server.Network
public static class FeatureProtection
{
private static ThirdPartyFeature m_Disabled = 0;
public static ThirdPartyFeature DisabledFeatures => m_Disabled;
public static ThirdPartyFeature DisabledFeatures { get; private set; } = 0;
public static void Disable( ThirdPartyFeature feature )
{
@ -4028,9 +3973,9 @@ namespace Server.Network
public static void SetDisabled( ThirdPartyFeature feature, bool value )
{
if ( value )
m_Disabled |= feature;
DisabledFeatures |= feature;
else
m_Disabled &= ~feature;
DisabledFeatures &= ~feature;
}
}
@ -4091,7 +4036,7 @@ namespace Server.Network
else if ( a.Limit == 1 )
flags |= (CharacterListFlags.SlotLimit & CharacterListFlags.OneCharacterSlot); // Limit Characters & One Character
m_Stream.Write( (int)(flags | m_AdditionalFlags) ); // Additional Flags
m_Stream.Write( (int)(flags | AdditionalFlags) ); // Additional Flags
m_Stream.Write( (short) -1 );
@ -4126,13 +4071,7 @@ namespace Server.Network
private static System.Security.Cryptography.MD5CryptoServiceProvider m_MD5Provider;
private static CharacterListFlags m_AdditionalFlags;
public static CharacterListFlags AdditionalFlags
{
get => m_AdditionalFlags;
set => m_AdditionalFlags = value;
}
public static CharacterListFlags AdditionalFlags { get; set; }
}
public sealed class CharacterListOld : Packet
@ -4285,41 +4224,20 @@ namespace Server.Network
public sealed class ServerInfo
{
private string m_Name;
private int m_FullPercent;
private int m_TimeZone;
private IPEndPoint m_Address;
public string Name { get; set; }
public string Name
{
get => m_Name;
set => m_Name = value;
}
public int FullPercent { get; set; }
public int FullPercent
{
get => m_FullPercent;
set => m_FullPercent = value;
}
public int TimeZone { get; set; }
public int TimeZone
{
get => m_TimeZone;
set => m_TimeZone = value;
}
public IPEndPoint Address
{
get => m_Address;
set => m_Address = value;
}
public IPEndPoint Address { get; set; }
public ServerInfo( string name, int fullPercent, TimeZone tz, IPEndPoint address )
{
m_Name = name;
m_FullPercent = fullPercent;
m_TimeZone = tz.GetUtcOffset( DateTime.Now ).Hours;
m_Address = address;
Name = name;
FullPercent = fullPercent;
TimeZone = tz.GetUtcOffset( DateTime.Now ).Hours;
Address = address;
}
}
@ -4413,15 +4331,14 @@ namespace Server.Network
}
protected PacketWriter m_Stream;
private int m_PacketID;
private int m_Length;
private State m_State;
public int PacketID => m_PacketID;
public int PacketID { get; }
protected Packet( int packetID )
{
m_PacketID = packetID;
PacketID = packetID;
if (Core.Profiling) {
PacketSendProfile prof = PacketSendProfile.Acquire( GetType() );
@ -4432,13 +4349,13 @@ namespace Server.Network
public void EnsureCapacity( int length )
{
m_Stream = PacketWriter.CreateInstance( length );// new PacketWriter( length );
m_Stream.Write( (byte) m_PacketID );
m_Stream.Write( (byte) PacketID );
m_Stream.Write( (short) 0 );
}
protected Packet( int packetID, int length )
{
m_PacketID = packetID;
PacketID = packetID;
m_Length = length;
m_Stream = PacketWriter.CreateInstance( length );// new PacketWriter( length );
@ -4609,7 +4526,7 @@ namespace Server.Network
{
int diff = (int)m_Stream.Length - m_Length;
Console.WriteLine( "Packet: 0x{0:X2}: Bad packet length! ({1}{2} bytes)", m_PacketID, diff >= 0 ? "+" : "", diff );
Console.WriteLine( "Packet: 0x{0:X2}: Bad packet length! ({1}{2} bytes)", PacketID, diff >= 0 ? "+" : "", diff );
}
MemoryStream ms = m_Stream.UnderlyingStream;
@ -4625,10 +4542,10 @@ namespace Server.Network
Compression.Compress(m_CompiledBuffer, 0, length, buffer, ref length);
if (length <= 0) {
Console.WriteLine("Warning: Compression buffer overflowed on packet 0x{0:X2} ('{1}') (length={2})", m_PacketID, GetType().Name, length);
Console.WriteLine("Warning: Compression buffer overflowed on packet 0x{0:X2} ('{1}') (length={2})", PacketID, GetType().Name, length);
using (StreamWriter op = new StreamWriter("compression_overflow.log", true))
{
op.WriteLine("{0} Warning: Compression buffer overflowed on packet 0x{1:X2} ('{2}') (length={3})", DateTime.UtcNow, m_PacketID, GetType().Name, length);
op.WriteLine("{0} Warning: Compression buffer overflowed on packet 0x{1:X2} ('{2}') (length={3})", DateTime.UtcNow, PacketID, GetType().Name, length);
op.WriteLine(new System.Diagnostics.StackTrace());
}
} else {

View file

@ -36,23 +36,20 @@ namespace Server.Network {
gram = new Gram();
}
gram._buffer = AcquireBuffer();
gram._length = 0;
gram.Buffer = AcquireBuffer();
gram.Length = 0;
return gram;
}
}
private byte[] _buffer;
private int _length;
public byte[] Buffer { get; private set; }
public byte[] Buffer => _buffer;
public int Length { get; private set; }
public int Length => _length;
public int Available => ( Buffer.Length - Length );
public int Available => ( _buffer.Length - _length );
public bool IsFull => ( _length == _buffer.Length );
public bool IsFull => ( Length == Buffer.Length );
private Gram() {
}
@ -60,9 +57,9 @@ namespace Server.Network {
public int Write( byte[] buffer, int offset, int length ) {
int write = Math.Min( length, Available );
System.Buffer.BlockCopy( buffer, offset, _buffer, _length, write );
System.Buffer.BlockCopy( buffer, offset, Buffer, Length, write );
_length += write;
Length += write;
return write;
}
@ -70,7 +67,7 @@ namespace Server.Network {
public void Release() {
lock ( _pool ) {
_pool.Push( this );
ReleaseBuffer( _buffer );
ReleaseBuffer( Buffer );
}
}
}