public void Write(WriteStream stream, StreamContext context) { if (context.fullModel) { // ClientID/StreamID stream.WriteVarint32(1, WriteStream.ConvertNegativeOneIntToUInt(_clientID)); stream.WriteVarint32(2, WriteStream.ConvertNegativeOneIntToUInt(_streamID)); } else { // ClientID/StreamID if (context.reliableChannel) { // If we're going to send an update. Push the cache to inflight. LocalCacheEntry entry = _cache.localCache; if (entry.clientIDSet || entry.streamIDSet) { _cache.PushLocalCacheToInflight(context.updateID); } if (entry.clientIDSet) { stream.WriteVarint32(1, WriteStream.ConvertNegativeOneIntToUInt(entry.clientID)); } if (entry.streamIDSet) { stream.WriteVarint32(2, WriteStream.ConvertNegativeOneIntToUInt(entry.streamID)); } } } }
public void Write(WriteStream stream, StreamContext context) { if (context.fullModel) { // Write all properties stream.WriteString((uint)PropertyID.Name, _name); stream.WriteVarint32((uint)PropertyID.Pointer, _pointer ? 1u : 0u); } else { // Reliable properties if (context.reliableChannel) { LocalCacheEntry entry = _cache.localCache; if (entry.nameSet || entry.pointerSet) { _cache.PushLocalCacheToInflight(context.updateID); } if (entry.nameSet) { stream.WriteString((uint)PropertyID.Name, entry.name); } if (entry.pointerSet) { stream.WriteVarint32((uint)PropertyID.Pointer, entry.pointer ? 1u : 0u); } } } }
// Serialization public int WriteLength(StreamContext context) { int length = 0; if (context.fullModel) { // Flatten cache _clientID = clientID; _streamID = streamID; _cache.Clear(); // ClientID/StreamID length += WriteStream.WriteVarint32Length(1, WriteStream.ConvertNegativeOneIntToUInt(_clientID)); length += WriteStream.WriteVarint32Length(2, WriteStream.ConvertNegativeOneIntToUInt(_streamID)); } else { // ClientID/StreamID if (context.reliableChannel) { LocalCacheEntry entry = _cache.localCache; if (entry.clientIDSet) { length += WriteStream.WriteVarint32Length(1, WriteStream.ConvertNegativeOneIntToUInt(entry.clientID)); } if (entry.streamIDSet) { length += WriteStream.WriteVarint32Length(2, WriteStream.ConvertNegativeOneIntToUInt(entry.streamID)); } } } return(length); }
public int WriteLength(StreamContext context) { int length = 0; if (context.fullModel) { // Mark unreliable properties as clean and flatten the in-flight cache. // TODO: Move this out of WriteLength() once we have a prepareToWrite method. _name = name; _pointer = pointer; _cache.Clear(); // Write all properties length += WriteStream.WriteStringLength((uint)PropertyID.Name, _name); length += WriteStream.WriteVarint32Length((uint)PropertyID.Pointer, _pointer ? 1u : 0u); } else { // Reliable properties if (context.reliableChannel) { LocalCacheEntry entry = _cache.localCache; if (entry.nameSet) { length += WriteStream.WriteStringLength((uint)PropertyID.Name, entry.name); } if (entry.pointerSet) { length += WriteStream.WriteVarint32Length((uint)PropertyID.Pointer, entry.pointer ? 1u : 0u); } } } return(length); }
public void Write(WriteStream stream, StreamContext context) { if (context.fullModel) { // Active state stream.WriteVarint32((uint)Properties.ActiveState, _activeState); // Device type stream.WriteVarint32((uint)Properties.DeviceType, _deviceType); } else { // Active state if (context.reliableChannel) { // If we're going to send an update. Push the cache to inflight. LocalCacheEntry entry = _cache.localCache; if (entry.activeStateSet || entry.deviceTypeSet) { _cache.PushLocalCacheToInflight(context.updateID); } if (entry.activeStateSet) { stream.WriteVarint32((uint)Properties.ActiveState, entry.activeState); } if (entry.deviceTypeSet) { stream.WriteVarint32((uint)Properties.DeviceType, entry.deviceType); } } } }
protected override void Write(WriteStream stream, StreamContext context) { var didWriteProperties = false; if (context.fullModel) { stream.WriteVarint32((uint)PropertyID.ClientID, (uint)_clientID); stream.WriteVarint32((uint)PropertyID.StreamID, (uint)_streamID); } else if (context.reliableChannel) { LocalCacheEntry entry = _cache.localCache; if (entry.clientIDSet || entry.streamIDSet) { _cache.PushLocalCacheToInflight(context.updateID); ClearCacheOnStreamCallback(context); } if (entry.clientIDSet) { stream.WriteVarint32((uint)PropertyID.ClientID, (uint)entry.clientID); didWriteProperties = true; } if (entry.streamIDSet) { stream.WriteVarint32((uint)PropertyID.StreamID, (uint)entry.streamID); didWriteProperties = true; } if (didWriteProperties) { InvalidateReliableLength(); } } }
protected override void Write(WriteStream stream, StreamContext context) { var didWriteProperties = false; if (context.fullModel) { stream.WriteVarint32((uint)PropertyID.DeviceType, (uint)_deviceType); stream.WriteString((uint)PropertyID.DeviceModel, _deviceModel); stream.WriteVarint32((uint)PropertyID.HeadActive, _headActive ? 1u : 0u); stream.WriteVarint32((uint)PropertyID.LeftHandActive, _leftHandActive ? 1u : 0u); stream.WriteVarint32((uint)PropertyID.RightHandActive, _rightHandActive ? 1u : 0u); } else if (context.reliableChannel) { LocalCacheEntry entry = _cache.localCache; if (entry.deviceTypeSet || entry.deviceModelSet || entry.headActiveSet || entry.leftHandActiveSet || entry.rightHandActiveSet) { _cache.PushLocalCacheToInflight(context.updateID); ClearCacheOnStreamCallback(context); } if (entry.deviceTypeSet) { stream.WriteVarint32((uint)PropertyID.DeviceType, (uint)entry.deviceType); didWriteProperties = true; } if (entry.deviceModelSet) { stream.WriteString((uint)PropertyID.DeviceModel, entry.deviceModel); didWriteProperties = true; } if (entry.headActiveSet) { stream.WriteVarint32((uint)PropertyID.HeadActive, entry.headActive ? 1u : 0u); didWriteProperties = true; } if (entry.leftHandActiveSet) { stream.WriteVarint32((uint)PropertyID.LeftHandActive, entry.leftHandActive ? 1u : 0u); didWriteProperties = true; } if (entry.rightHandActiveSet) { stream.WriteVarint32((uint)PropertyID.RightHandActive, entry.rightHandActive ? 1u : 0u); didWriteProperties = true; } if (didWriteProperties) { InvalidateReliableLength(); } } }
protected override int WriteLength(StreamContext context) { int length = 0; if (context.fullModel) { FlattenCache(); length += WriteStream.WriteVarint32Length((uint)PropertyID.DeviceType, (uint)_deviceType); length += WriteStream.WriteStringLength((uint)PropertyID.DeviceModel, _deviceModel); length += WriteStream.WriteVarint32Length((uint)PropertyID.HeadActive, _headActive ? 1u : 0u); length += WriteStream.WriteVarint32Length((uint)PropertyID.LeftHandActive, _leftHandActive ? 1u : 0u); length += WriteStream.WriteVarint32Length((uint)PropertyID.RightHandActive, _rightHandActive ? 1u : 0u); } else if (context.reliableChannel) { LocalCacheEntry entry = _cache.localCache; if (entry.deviceTypeSet) { length += WriteStream.WriteVarint32Length((uint)PropertyID.DeviceType, (uint)entry.deviceType); } if (entry.deviceModelSet) { length += WriteStream.WriteStringLength((uint)PropertyID.DeviceModel, entry.deviceModel); } if (entry.headActiveSet) { length += WriteStream.WriteVarint32Length((uint)PropertyID.HeadActive, entry.headActive ? 1u : 0u); } if (entry.leftHandActiveSet) { length += WriteStream.WriteVarint32Length((uint)PropertyID.LeftHandActive, entry.leftHandActive ? 1u : 0u); } if (entry.rightHandActiveSet) { length += WriteStream.WriteVarint32Length((uint)PropertyID.RightHandActive, entry.rightHandActive ? 1u : 0u); } } return(length); }
// Serialization public int WriteLength(StreamContext context) { int length = 0; if (context.fullModel) { // Flatten cache _activeState = activeState; _deviceType = deviceType; _cache.Clear(); // Active state length += WriteStream.WriteVarint32Length((uint)Properties.ActiveState, _activeState); // Device type length += WriteStream.WriteVarint32Length((uint)Properties.DeviceType, _deviceType); } else { // Active state if (context.reliableChannel) { LocalCacheEntry entry = _cache.localCache; if (entry.activeStateSet) { length += WriteStream.WriteVarint32Length((uint)Properties.ActiveState, entry.activeState); } if (entry.deviceTypeSet) { length += WriteStream.WriteVarint32Length((uint)Properties.DeviceType, entry.deviceType); } } } return(length); }
protected override int WriteLength(StreamContext context) { int length = 0; if (context.fullModel) { FlattenCache(); length += WriteStream.WriteVarint32Length((uint)PropertyID.ClientID, (uint)_clientID); length += WriteStream.WriteVarint32Length((uint)PropertyID.StreamID, (uint)_streamID); } else if (context.reliableChannel) { LocalCacheEntry entry = _cache.localCache; if (entry.clientIDSet) { length += WriteStream.WriteVarint32Length((uint)PropertyID.ClientID, (uint)entry.clientID); } if (entry.streamIDSet) { length += WriteStream.WriteVarint32Length((uint)PropertyID.StreamID, (uint)entry.streamID); } } return(length); }