internal void UnpackEventDatagram(PoolEventPayload payload) { ushort typeID = payload.EventData.ReadUShort(); SynchronisableEntity entity = EntityGenerator.GetEntityFactory(typeID).ConstructNewEntity(0); entity.ReadFromBuffer(payload.EventData, Context); RecievedEvents.Add(new SyncEvent(entity, entity.GetValue())); }
public void AddEvent(object instance, bool guaranteeReceipt = true, bool urgent = true) { SynchronisableEntity entity = EntityGenerator.GetEntityFactory(instance.GetType().TypeHandle).ConstructForExisting(instance); entity.TrackChanges(instance, Context); int size = entity.WriteToBufferSize() + sizeof(ushort); PoolEventPayload payload = PoolEventPayload.Generate(PoolID, size, guaranteeReceipt, urgent); payload.EventData.WriteUShort(entity.TypeID); entity.WriteToBuffer(payload.EventData); BroadcastPayload(payload); }