Esempio n. 1
0
        // generic reader: reads the next TypeInfo object from stream and returns it
        /// <exception cref="System.IO.IOException"/>
        private FieldTypeInfo GenericReadTypeInfo(RecordInput rin, string tag)
        {
            string fieldName = rin.ReadString(tag);
            TypeID id        = GenericReadTypeID(rin, tag);

            return(new FieldTypeInfo(fieldName, id));
        }
Esempio n. 2
0
 /// <summary>Deserialize the type information for a record</summary>
 /// <exception cref="System.IO.IOException"/>
 public override void Deserialize(RecordInput rin, string tag)
 {
     // read in any header, version info
     rin.StartRecord(tag);
     // name
     this.name = rin.ReadString(tag);
     sTid.Read(rin, tag);
     rin.EndRecord(tag);
 }
Esempio n. 3
0
        /*
         * deserialize ourselves. Called by RTI.
         */
        /// <exception cref="System.IO.IOException"/>
        internal virtual void Read(RecordInput rin, string tag)
        {
            // number of elements
            int numElems = rin.ReadInt(tag);

            for (int i = 0; i < numElems; i++)
            {
                typeInfos.AddItem(GenericReadTypeInfo(rin, tag));
            }
        }
Esempio n. 4
0
        // generic reader: reads the next TypeID object from stream and returns it
        /// <exception cref="System.IO.IOException"/>
        private TypeID GenericReadTypeID(RecordInput rin, string tag)
        {
            byte typeVal = rin.ReadByte(tag);

            switch (typeVal)
            {
            case TypeID.RIOType.Bool:
            {
                return(TypeID.BoolTypeID);
            }

            case TypeID.RIOType.Buffer:
            {
                return(TypeID.BufferTypeID);
            }

            case TypeID.RIOType.Byte:
            {
                return(TypeID.ByteTypeID);
            }

            case TypeID.RIOType.Double:
            {
                return(TypeID.DoubleTypeID);
            }

            case TypeID.RIOType.Float:
            {
                return(TypeID.FloatTypeID);
            }

            case TypeID.RIOType.Int:
            {
                return(TypeID.IntTypeID);
            }

            case TypeID.RIOType.Long:
            {
                return(TypeID.LongTypeID);
            }

            case TypeID.RIOType.Map:
            {
                TypeID tIDKey   = GenericReadTypeID(rin, tag);
                TypeID tIDValue = GenericReadTypeID(rin, tag);
                return(new MapTypeID(tIDKey, tIDValue));
            }

            case TypeID.RIOType.String:
            {
                return(TypeID.StringTypeID);
            }

            case TypeID.RIOType.Struct:
            {
                Org.Apache.Hadoop.Record.Meta.StructTypeID stID = new Org.Apache.Hadoop.Record.Meta.StructTypeID
                                                                      ();
                int numElems = rin.ReadInt(tag);
                for (int i = 0; i < numElems; i++)
                {
                    stID.Add(GenericReadTypeInfo(rin, tag));
                }
                return(stID);
            }

            case TypeID.RIOType.Vector:
            {
                TypeID tID = GenericReadTypeID(rin, tag);
                return(new VectorTypeID(tID));
            }

            default:
            {
                // shouldn't be here
                throw new IOException("Unknown type read");
            }
            }
        }
Esempio n. 5
0
 /// <summary>Deserialize a record without a tag</summary>
 /// <param name="rin">Record input source</param>
 /// <exception cref="System.IO.IOException"/>
 public virtual void Deserialize(RecordInput rin)
 {
     this.Deserialize(rin, string.Empty);
 }
Esempio n. 6
0
 /// <summary>Deserialize a record with a tag (usually field name)</summary>
 /// <param name="rin">Record input source</param>
 /// <param name="tag">Record tag (Used only in tagged serialization e.g. XML)</param>
 /// <exception cref="System.IO.IOException"/>
 public abstract void Deserialize(RecordInput rin, string tag);
Esempio n. 7
0
        /// <summary>read/skip bytes from stream based on a type</summary>
        /// <exception cref="System.IO.IOException"/>
        public static void Skip(RecordInput rin, string tag, TypeID typeID)
        {
            switch (typeID.typeVal)
            {
            case TypeID.RIOType.Bool:
            {
                rin.ReadBool(tag);
                break;
            }

            case TypeID.RIOType.Buffer:
            {
                rin.ReadBuffer(tag);
                break;
            }

            case TypeID.RIOType.Byte:
            {
                rin.ReadByte(tag);
                break;
            }

            case TypeID.RIOType.Double:
            {
                rin.ReadDouble(tag);
                break;
            }

            case TypeID.RIOType.Float:
            {
                rin.ReadFloat(tag);
                break;
            }

            case TypeID.RIOType.Int:
            {
                rin.ReadInt(tag);
                break;
            }

            case TypeID.RIOType.Long:
            {
                rin.ReadLong(tag);
                break;
            }

            case TypeID.RIOType.Map:
            {
                Index     midx1 = rin.StartMap(tag);
                MapTypeID mtID  = (MapTypeID)typeID;
                for (; !midx1.Done(); midx1.Incr())
                {
                    Skip(rin, tag, mtID.GetKeyTypeID());
                    Skip(rin, tag, mtID.GetValueTypeID());
                }
                rin.EndMap(tag);
                break;
            }

            case TypeID.RIOType.String:
            {
                rin.ReadString(tag);
                break;
            }

            case TypeID.RIOType.Struct:
            {
                rin.StartRecord(tag);
                // read past each field in the struct
                StructTypeID stID = (StructTypeID)typeID;
                IEnumerator <FieldTypeInfo> it = stID.GetFieldTypeInfos().GetEnumerator();
                while (it.HasNext())
                {
                    FieldTypeInfo tInfo = it.Next();
                    Skip(rin, tag, tInfo.GetTypeID());
                }
                rin.EndRecord(tag);
                break;
            }

            case TypeID.RIOType.Vector:
            {
                Index        vidx1 = rin.StartVector(tag);
                VectorTypeID vtID  = (VectorTypeID)typeID;
                for (; !vidx1.Done(); vidx1.Incr())
                {
                    Skip(rin, tag, vtID.GetElementTypeID());
                }
                rin.EndVector(tag);
                break;
            }

            default:
            {
                // shouldn't be here
                throw new IOException("Unknown typeID when skipping bytes");
            }
            }
        }