예제 #1
0
        public void ReadFrom(InputStream _input)
        {
            uint _tag;

            while ((_tag = _input.ReadTag()) != 0)
            {
                ReadOneField(_input, _tag);
            }
        }
예제 #2
0
        internal void InternalReadFrom(InputStream _input)
        {
            var _message_len = _input.ReadLength();
            var _end_pos     = _input.Position + _message_len;

            while (_input.Position < _end_pos)
            {
                uint _tag = _input.ReadTag();
                ReadOneField(_input, _tag);
            }
        }
예제 #3
0
        private void ReadOneField(InputStream _input, uint _tag)
        {
            WireType _wire_type = WireFormat.GetTagWireType(_tag);
            int      _index     = WireFormat.GetTagFieldNumber(_tag);

            switch (_index)
            {
            case 1:
                bb = _input.ReadString();
                break;

            default:
                _input.SkipField(_wire_type);
                break;
            }
        }
예제 #4
0
        private void ReadOneField(InputStream _input, uint _tag)
        {
            WireType _wire_type = WireFormat.GetTagWireType(_tag);
            int      _index     = WireFormat.GetTagFieldNumber(_tag);

            switch (_index)
            {
            case 1:
                a = _input.ReadInt32();
                break;

            case 2:
                __b = new B();
                b.InternalReadFrom(_input);
                break;

            case 3:
                if (_wire_type == WireType.LengthDelimited)
                {
                    int _len         = _input.ReadLength();
                    var _end_pos_arr = _input.Position + _len;
                    while (_input.Position < _end_pos_arr)
                    {
                        var _item = _input.ReadInt32();
                        c.Add(_item);
                    }
                }
                else
                {
                    var _item = _input.ReadInt32();
                    c.Add(_item);
                }
                break;

            default:
                _input.SkipField(_wire_type);
                break;
            }
        }