Ejemplo n.º 1
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 3
0
        // 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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 9
0
        // 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);
        }