/// <summary> /// Initializes a new instance of the <see cref="HeaderWriter"/> class. /// </summary> /// <param name="writer">The writer.</param> /// <param name="headerLength">Length of the packet.</param> internal HeaderWriter(IBinaryHeaderEncoder writer, ushort headerLength) { m_Length = headerLength; m_Writer = writer; m_BeginPosition = CurrentPosition(); writer.Seek(m_Length, SeekOrigin.Current); }
public ProducerMessageHeader(IBinaryHeaderEncoder writer, FieldEncodingEnum encoding, MessageLengthFieldTypeEnum lengthFieldType, MessageTypeEnum messageType, ConfigurationVersionDataType configurationVersion) { m_MessageType = messageType; m_Encoding = encoding; m_lengthFieldType = lengthFieldType; m_HeaderWriter = new HeaderWriter(writer, PackageHeaderLength()); MessageSequenceNumber = 0; ConfigurationVersion = configurationVersion; }
public ProducerHeader(IBinaryHeaderEncoder writer, Guid producerId, IList <ushort> dataSetWriterIds) : base() { if (writer == null) { throw new ArgumentNullException(nameof(writer)); } PublisherId = producerId; NetworkMessageFlags = Convert.ToByte(PacketFlagsDefinitions.NetworkMessageType.RegularMessages); ProtocolVersion = CommonDefinitions.ProtocolVersion; SecurityTokenId = 0; NonceLength = 0; DataSetWriterIds = new ReadOnlyCollection <ushort>(dataSetWriterIds); MessageCount = Convert.ToByte(DataSetWriterIds.Count); ushort _packetLength = Convert.ToUInt16(m_PacketHeaderLength + dataSetWriterIds.Count * 2); m_HeaderWriter = new HeaderWriter(writer, _packetLength); }
private void WriteHeader(IBinaryHeaderEncoder writer, ushort messageLength) { writer.Write((byte)MessageType); writer.Write(EncodingFlags); switch (m_lengthFieldType) { case MessageLengthFieldTypeEnum.OneByte: writer.Write(Convert.ToByte(messageLength)); break; case MessageLengthFieldTypeEnum.TwoBytes: writer.Write(Convert.ToUInt16(messageLength)); break; case MessageLengthFieldTypeEnum.FourBytes: writer.Write(Convert.ToUInt32(messageLength)); break; } writer.Write(MessageSequenceNumber); writer.Write(ConfigurationVersion.MajorVersion); writer.Write(ConfigurationVersion.MinorVersion); switch (MessageType) { case MessageTypeEnum.DataKeyFrame: case MessageTypeEnum.DataDeltaFrame: case MessageTypeEnum.Event: writer.Write(TimeStamp); writer.Write(FieldCount); break; case MessageTypeEnum.KeepAlive: break; case MessageTypeEnum.DataSetMetadata: break; default: break; } }
//methods private void WriteHeader(IBinaryHeaderEncoder m_Writer, ushort dataLength) { Debug.Assert(DataSetWriterIds != null); Debug.Assert(DataSetWriterIds.Count == MessageCount); m_Writer.Write(ProtocolVersion); m_Writer.Write(NetworkMessageFlags); m_Writer.Write(PublisherId); m_Writer.Write(SecurityTokenId); m_Writer.Write(NonceLength); for (int i = 0; i < NonceLength; i++) { m_Writer.Write(Nonce[i]); } m_Writer.Write(MessageCount); if (MessageCount == 0) { return; } for (int i = 0; i < DataSetWriterIds.Count; i++) { m_Writer.Write(DataSetWriterIds[i]); } }
/// <summary> /// Gets the producer packet header. /// </summary> /// <param name="encoder">The writer.</param> /// <param name="producerId">The producer identifier.</param> /// <param name="dataSetWriterIds">The data set writer ids list. The size of the list must be equal to the <see cref="PacketHeader.MessageCount"/>.</param> /// <returns>An instance of the <see cref="PacketHeader"/>.</returns> public static PacketHeader GetProducerPacketHeader(IBinaryHeaderEncoder encoder, Guid producerId, IList <ushort> dataSetWriterIds) { return(new ProducerHeader(encoder, producerId, dataSetWriterIds)); }
/// <summary> /// Gets the producer message header. /// </summary> /// <param name="writer">The writer <see cref="IBinaryHeaderEncoder" /> to populate the payload with the header information.</param> /// <param name="encoding">The encoding.</param> /// <param name="lengthFieldType">Type of the length field in the the message header.</param> /// <param name="messageType">Type of the message.</param> /// <param name="configurationVersion">The configuration version.</param> /// <returns>MessageHeader.</returns> internal static MessageHeader GetProducerMessageHeader(IBinaryHeaderEncoder writer, FieldEncodingEnum encoding, MessageLengthFieldTypeEnum lengthFieldType, MessageTypeEnum messageType, ConfigurationVersionDataType configurationVersion) { return(new ProducerMessageHeader(writer, encoding, lengthFieldType, messageType, configurationVersion)); }
/// <summary> /// Gets the producer message header. /// </summary> /// <param name="writer">The writer <see cref="IBinaryHeaderEncoder" /> to populate the payload with the header information.</param> /// <param name="encoding">The encoding.</param> /// <param name="lengthFieldType">Type of the length field in the the message header.</param> /// <param name="messageType">Type of the message.</param> /// <param name="configurationVersion">The configuration version.</param> /// <returns>MessageHeader.</returns> internal static MessageHeader GetProducerMessageHeader(IBinaryHeaderEncoder writer, FieldEncodingEnum encoding, MessageLengthFieldTypeEnum lengthFieldType, MessageTypeEnum messageType, ConfigurationVersionDataType configurationVersion) { return new ProducerMessageHeader(writer, encoding, lengthFieldType, messageType, configurationVersion); }
//methods private void WriteHeader(IBinaryHeaderEncoder m_Writer, ushort dataLength) { Debug.Assert(DataSetWriterIds != null); Debug.Assert(DataSetWriterIds.Count == MessageCount); m_Writer.Write(ProtocolVersion); m_Writer.Write(NetworkMessageFlags); m_Writer.Write(PublisherId); m_Writer.Write(SecurityTokenId); m_Writer.Write(NonceLength); for (int i = 0; i < NonceLength; i++) m_Writer.Write(Nonce[i]); m_Writer.Write(MessageCount); if (MessageCount == 0) return; for (int i = 0; i < DataSetWriterIds.Count; i++) m_Writer.Write(DataSetWriterIds[i]); }
public ProducerHeader(IBinaryHeaderEncoder writer, Guid producerId, IList<UInt16> dataSetWriterIds) : base() { if (writer == null) throw new ArgumentNullException(nameof(writer)); PublisherId = producerId; NetworkMessageFlags = Convert.ToByte(PacketFlagsDefinitions.NetworkMessageType.RegularMessages); ProtocolVersion = CommonDefinitions.ProtocolVersion; SecurityTokenId = 0; NonceLength = 0; DataSetWriterIds = new ReadOnlyCollection<UInt16>(dataSetWriterIds); MessageCount = Convert.ToByte(DataSetWriterIds.Count); ushort _packetLength = Convert.ToUInt16(m_PacketHeaderLength + dataSetWriterIds.Count * 2); m_HeaderWriter = new HeaderWriter(writer, _packetLength); }
/// <summary> /// Gets the producer packet header. /// </summary> /// <param name="encoder">The writer.</param> /// <param name="producerId">The producer identifier.</param> /// <param name="dataSetWriterIds">The data set writer ids list. The size of the list must be equal to the <see cref="PacketHeader.MessageCount"/>.</param> /// <returns>An instance of the <see cref="PacketHeader"/>.</returns> public static PacketHeader GetProducerPacketHeader(IBinaryHeaderEncoder encoder, Guid producerId, IList<UInt16> dataSetWriterIds) { return new ProducerHeader(encoder, producerId, dataSetWriterIds); }