/// <summary>
        /// Read the message header structure and cache the meta data for finding the key fields for decoding messages.
        /// </summary>
        /// <param name="headerStructure"> for the meta data describing the message header. </param>
        public OtfHeaderDecoder(HeaderStructure headerStructure)
        {
            _size = headerStructure.Tokens[0].Size;

            foreach (Token token in headerStructure.Tokens)
            {
                switch (token.Name)
                {
                    case HeaderStructure.BlockLength:
                        _blockLengthOffset = token.Offset;
                        _blockLengthType = token.Encoding.PrimitiveType;
                        _blockLengthByteOrder = token.Encoding.ByteOrder;
                        break;

                    case HeaderStructure.TemplateId:
                        _templateIdOffset = token.Offset;
                        _templateIdType = token.Encoding.PrimitiveType;
                        _templateIdByteOrder = token.Encoding.ByteOrder;
                        break;

                    case HeaderStructure.SchemaId:
                        _schemaIdOffset = token.Offset;
                        _schemaIdType = token.Encoding.PrimitiveType;
                        _schemaIdByteOrder = token.Encoding.ByteOrder;
                        break;

                    case HeaderStructure.SchemaVersion:
                        _schemaVersionOffset = token.Offset;
                        _schemaVersionType = token.Encoding.PrimitiveType;
                        _schemaVersionByteOrder = token.Encoding.ByteOrder;
                        break;
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Create a new IR container taking a defensive copy of the headerStructure <seealso cref="Token"/>s passed.
        /// </summary>
        /// <param name="packageName"> that should be applied to generated code. </param>
        /// <param name="namespaceName"> that should be applied to generated code.</param>
        /// <param name="headerTokens"> representing the message headerStructure. </param>
        public IntermediateRepresentation(string packageName, string namespaceName, IList <Token> headerTokens, int version)
        {
            Verify.NotNull(packageName, "packageName");
            Verify.NotNull(headerTokens, "headerTokens");

            _packageName     = packageName;
            _headerStructure = new HeaderStructure(new List <Token>(headerTokens));
            _version         = version;
            _namespaceName   = namespaceName;
        }
        /// <summary>
        /// Create a new IR container taking a defensive copy of the headerStructure <seealso cref="Token"/>s passed.
        /// </summary>
        /// <param name="packageName"> that should be applied to generated code. </param>
        /// <param name="namespaceName"> that should be applied to generated code.</param>
        /// <param name="headerTokens"> representing the message headerStructure. </param>
        public IntermediateRepresentation(string packageName, string namespaceName, IList<Token> headerTokens, int version)
        {
            Verify.NotNull(packageName, "packageName");
            Verify.NotNull(headerTokens, "headerTokens");

            _packageName = packageName;
            _headerStructure = new HeaderStructure(new List<Token>(headerTokens));
            _version = version;
            _namespaceName = namespaceName;
        }