Update Readers/Writers for Buffers & Fixes bugs (#283)

- [X] Renames PacketReader to CircularBufferReader
- [X] Fixes bugs with CircularBufferReader
- [X] Adds CircularBufferWriter
- [X] Adds SpanWriter
- [X] Adds SpanReader

Bumps release version
This commit is contained in:
Kamron Batman 2020-10-24 14:46:59 -07:00 • committed by GitHub
parent 3b7f648c27
commit 6bd4f0d265
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
26 changed files with 1302 additions and 351 deletions

View file

@ -23,7 +23,7 @@ namespace Server.Engines.Chat
to?.Send(new ChatMessagePacket(null, (int)type + 20, param1, param2));
}
public static void OpenChatWindowRequest(NetState state, PacketReader reader)
public static void OpenChatWindowRequest(NetState state, CircularBufferReader reader)
{
var from = state.Mobile;
@ -56,7 +56,7 @@ namespace Server.Engines.Chat
return user;
}
public static void ChatAction(NetState state, PacketReader reader)
public static void ChatAction(NetState state, CircularBufferReader reader)
{
if (!Enabled)
{

View file

@ -193,7 +193,7 @@ namespace Server.Engines.MLQuests.Gumps
return false;
}
private static void RaceChangeReply(NetState state, PacketReader reader)
private static void RaceChangeReply(NetState state, CircularBufferReader reader)
{
if (!m_Pending.TryGetValue(state, out var raceChangeState))
{

View file

@ -366,7 +366,7 @@ namespace Server.Items
PacketHandlers.Register(0x93, 99, true, OldHeaderChange);
}
public static void OldHeaderChange(NetState state, PacketReader reader)
public static void OldHeaderChange(NetState state, CircularBufferReader reader)
{
var from = state.Mobile;
@ -385,7 +385,7 @@ namespace Server.Items
book.Author = Utility.FixHtml(author);
}
public static void HeaderChange(NetState state, PacketReader reader)
public static void HeaderChange(NetState state, CircularBufferReader reader)
{
var from = state.Mobile;
@ -419,7 +419,7 @@ namespace Server.Items
book.Author = Utility.FixHtml(author);
}
public static void ContentChange(NetState state, PacketReader reader)
public static void ContentChange(NetState state, CircularBufferReader reader)
{
var from = state.Mobile;

View file

@ -2,7 +2,7 @@ using Server.Network;
namespace Server.Engines.Mahjong
{
public delegate void OnMahjongPacketReceive(MahjongGame game, NetState state, PacketReader reader);
public delegate void OnMahjongPacketReceive(MahjongGame game, NetState state, CircularBufferReader reader);
public sealed class MahjongPacketHandlers
{
@ -41,7 +41,7 @@ namespace Server.Engines.Mahjong
RegisterSubCommand(0x18, MoveDealerIndicator);
}
public static void OnPacket(NetState state,PacketReader reader)
public static void OnPacket(NetState state,CircularBufferReader reader)
{
var game = World.FindItem(reader.ReadUInt32()) as MahjongGame;
@ -85,7 +85,7 @@ namespace Server.Engines.Mahjong
};
}
public static void ExitGame(MahjongGame game, NetState state, PacketReader reader)
public static void ExitGame(MahjongGame game, NetState state, CircularBufferReader reader)
{
if (game == null)
{
@ -97,7 +97,7 @@ namespace Server.Engines.Mahjong
game.Players.LeaveGame(from);
}
public static void GivePoints(MahjongGame game, NetState state, PacketReader reader)
public static void GivePoints(MahjongGame game, NetState state, CircularBufferReader reader)
{
if (game?.Players.IsInGamePlayer(state.Mobile) != true)
{
@ -110,7 +110,7 @@ namespace Server.Engines.Mahjong
game.Players.TransferScore(state.Mobile, to, amount);
}
public static void RollDice(MahjongGame game, NetState state, PacketReader reader)
public static void RollDice(MahjongGame game, NetState state, CircularBufferReader reader)
{
if (game?.Players.IsInGamePlayer(state.Mobile) != true)
{
@ -120,7 +120,7 @@ namespace Server.Engines.Mahjong
game.Dices.RollDices(state.Mobile);
}
public static void BuildWalls(MahjongGame game, NetState state, PacketReader reader)
public static void BuildWalls(MahjongGame game, NetState state, CircularBufferReader reader)
{
if (game?.Players.IsInGameDealer(state.Mobile) != true)
{
@ -130,7 +130,7 @@ namespace Server.Engines.Mahjong
game.ResetWalls(state.Mobile);
}
public static void ResetScores(MahjongGame game, NetState state, PacketReader reader)
public static void ResetScores(MahjongGame game, NetState state, CircularBufferReader reader)
{
if (game?.Players.IsInGameDealer(state.Mobile) != true)
{
@ -140,7 +140,7 @@ namespace Server.Engines.Mahjong
game.Players.ResetScores(MahjongGame.BaseScore);
}
public static void AssignDealer(MahjongGame game, NetState state, PacketReader reader)
public static void AssignDealer(MahjongGame game, NetState state, CircularBufferReader reader)
{
if (game?.Players.IsInGameDealer(state.Mobile) != true)
{
@ -152,7 +152,7 @@ namespace Server.Engines.Mahjong
game.Players.AssignDealer(position);
}
public static void OpenSeat(MahjongGame game, NetState state, PacketReader reader)
public static void OpenSeat(MahjongGame game, NetState state, CircularBufferReader reader)
{
if (game?.Players.IsInGameDealer(state.Mobile) != true)
{
@ -169,7 +169,7 @@ namespace Server.Engines.Mahjong
game.Players.OpenSeat(position);
}
public static void ChangeOption(MahjongGame game, NetState state, PacketReader reader)
public static void ChangeOption(MahjongGame game, NetState state, CircularBufferReader reader)
{
if (game?.Players.IsInGameDealer(state.Mobile) != true)
{
@ -185,7 +185,7 @@ namespace Server.Engines.Mahjong
game.SpectatorVision = (options & 0x2) != 0;
}
public static void MoveWallBreakIndicator(MahjongGame game, NetState state, PacketReader reader)
public static void MoveWallBreakIndicator(MahjongGame game, NetState state, CircularBufferReader reader)
{
if (game?.Players.IsInGameDealer(state.Mobile) != true)
{
@ -198,7 +198,7 @@ namespace Server.Engines.Mahjong
game.WallBreakIndicator.Move(new Point2D(x, y));
}
public static void TogglePublicHand(MahjongGame game, NetState state, PacketReader reader)
public static void TogglePublicHand(MahjongGame game, NetState state, CircularBufferReader reader)
{
if (game?.Players.IsInGamePlayer(state.Mobile) != true)
{
@ -213,7 +213,7 @@ namespace Server.Engines.Mahjong
game.Players.SetPublic(game.Players.GetPlayerIndex(state.Mobile), publicHand);
}
public static void MoveTile(MahjongGame game, NetState state, PacketReader reader)
public static void MoveTile(MahjongGame game, NetState state, CircularBufferReader reader)
{
if (game?.Players.IsInGamePlayer(state.Mobile) != true)
{
@ -248,7 +248,7 @@ namespace Server.Engines.Mahjong
game.Tiles[number].Move(new Point2D(x, y), direction, flip, game.Players.GetPlayerIndex(state.Mobile));
}
public static void MoveDealerIndicator(MahjongGame game, NetState state, PacketReader reader)
public static void MoveDealerIndicator(MahjongGame game, NetState state, CircularBufferReader reader)
{
if (game?.Players.IsInGameDealer(state.Mobile) != true)
{

View file

@ -334,7 +334,7 @@ namespace Server.Items
PacketHandlers.Register(0x56, 11, true, OnMapCommand);
}
private static void OnMapCommand(NetState state, PacketReader reader)
private static void OnMapCommand(NetState state, CircularBufferReader reader)
{
var from = state.Mobile;

View file

@ -232,7 +232,7 @@ namespace Server.Items
PacketHandlers.Register(0x71, 0, true, BBClientRequest);
}
public static void BBClientRequest(NetState state, PacketReader reader)
public static void BBClientRequest(NetState state, CircularBufferReader reader)
{
var from = state.Mobile;
@ -260,7 +260,7 @@ namespace Server.Items
}
}
public static void BBRequestContent(Mobile from, BaseBulletinBoard board, PacketReader reader)
public static void BBRequestContent(Mobile from, BaseBulletinBoard board, CircularBufferReader reader)
{
if (!(World.FindItem(reader.ReadUInt32()) is BulletinMessage msg) || msg.Parent != board)
{
@ -270,7 +270,7 @@ namespace Server.Items
from.Send(new BBMessageContent(board, msg));
}
public static void BBRequestHeader(Mobile from, BaseBulletinBoard board, PacketReader reader)
public static void BBRequestHeader(Mobile from, BaseBulletinBoard board, CircularBufferReader reader)
{
if (!(World.FindItem(reader.ReadUInt32()) is BulletinMessage msg) || msg.Parent != board)
{
@ -280,7 +280,7 @@ namespace Server.Items
from.Send(new BBMessageHeader(board, msg));
}
public static void BBPostMessage(Mobile from, BaseBulletinBoard board, PacketReader reader)
public static void BBPostMessage(Mobile from, BaseBulletinBoard board, CircularBufferReader reader)
{
var thread = World.FindItem(reader.ReadUInt32()) as BulletinMessage;
@ -337,7 +337,7 @@ namespace Server.Items
board.PostMessage(from, thread, subject, lines);
}
public static void BBRemoveMessage(Mobile from, BaseBulletinBoard board, PacketReader reader)
public static void BBRemoveMessage(Mobile from, BaseBulletinBoard board, CircularBufferReader reader)
{
if (!(World.FindItem(reader.ReadUInt32()) is BulletinMessage msg) || msg.Parent != board)
{

View file

@ -142,7 +142,7 @@ namespace Server
}
}
public static void OnReceive(NetState state, PacketReader reader)
public static void OnReceive(NetState state, CircularBufferReader reader)
{
reader.ReadByte(); // 1: <4.0.1a, 2>=4.0.1a

View file

@ -20,7 +20,7 @@ namespace Server.Misc
}
}
private static void OnPartyTrack(NetState state, PacketReader reader)
private static void OnPartyTrack(NetState state, CircularBufferReader reader)
{
var from = state.Mobile;
var party = Party.Get(from);
@ -36,7 +36,7 @@ namespace Server.Misc
}
}
private static void OnGuildTrack(NetState state, PacketReader reader)
private static void OnGuildTrack(NetState state, CircularBufferReader reader)
{
var from = state.Mobile;

View file

@ -19,7 +19,7 @@ namespace Server.Misc
public static PacketHandler GetHandler(int packetID) =>
packetID >= 0 && packetID < m_Handlers.Length ? m_Handlers[packetID] : null;
public static void DecodeBundledPacket(NetState state, PacketReader reader)
public static void DecodeBundledPacket(NetState state, CircularBufferReader reader)
{
int packetID = reader.ReadByte();

View file

@ -1770,7 +1770,7 @@ namespace Server.Multis
context.Foundation.SendInfoTo(state);
}
public static void QueryDesignDetails(NetState state, PacketReader reader)
public static void QueryDesignDetails(NetState state, CircularBufferReader reader)
{
var from = state.Mobile;