public void OnNext(Notification value) { ushort command; byte[] payload; switch (value) { case EntityNotification entityNotification: command = (ushort)OfficialCommand.EntityNotification; payload = Serializer.Serialize(entityNotification); break; case BlockChangedNotification chunkNotification: command = (ushort)OfficialCommand.ChunkNotification; payload = Serializer.Serialize(chunkNotification); break; default: return; } var package = packagePool.Get(); package.Command = command; package.Payload = payload; client.SendPackageAndRelase(package); }
private void BuildAndSendPackage(byte[] data, OfficialCommand officialCommand) { var package = packagePool.Get(); package.Payload = data; package.Command = (ushort)officialCommand; SendPackageAndRelase(package); }
public Awaiter Load(out IChunkColumn column, Guid universeGuid, IPlanet planet, Index2 columnIndex) { var package = packagePool.Get(); package.Command = (ushort)OfficialCommand.LoadColumn; using (var memoryStream = new MemoryStream()) using (var binaryWriter = new BinaryWriter(memoryStream)) { binaryWriter.Write(universeGuid.ToByteArray()); binaryWriter.Write(planet.Id); binaryWriter.Write(columnIndex.X); binaryWriter.Write(columnIndex.Y); package.Payload = memoryStream.ToArray(); } column = new ChunkColumn(planet); var awaiter = GetAwaiter(column, package.UId); client.SendPackageAndRelase(package); return(awaiter); }