Ejemplo n.º 1
0
        public void enumerateResponse(routedMessage resp)
        {
            route         from   = resp.Route.getReturnRoute();
            commandReader reader = resp.getReader();

            reader.ReadByte();

            string name = reader.ReadString();

            //add to tree under parent
            //_parent.findNode(from);
            routedNode p = _parent;

            //problem with not having the first part of the address
            // TODO do it properly!

            int i;

            if (from.Length > 1)
            {
                p = p.children[0];
                for (i = 1; i < from.Length - 1; i++)
                {
                    byte childIdx = from.getLink(i - 1);
                    p = p.children[childIdx];
                }
                p.children.Add(from.getLink(i - 1), new routedNode(name, from));
            }
            else
            {
                p.children.Add(0, new routedNode(name, from));
            }
            //   else if (from.Length == 2) p.children[0].children.Add((byte)p.children[0].children.Count, new routedNode(name, from));
            //    else p.children.Add(from.getLink(i-1), new routedNode(name,from));

            //add children to unwalked list

            try
            {
                while (1 == 1)
                {
                    byte con = reader.ReadByte();
                    UnwalkedRoutes.Add(new route(from, con));
                }
            }
            catch (Exception) { }
        }
Ejemplo n.º 2
0
        public void parseValue(routedMessage msg)
        {
            UInt32        startIdx;
            byte          len;
            commandReader reader = msg.getReader();

            reader.ReadByte();
            reader.ReadByte();


            switch (TypeIdx)
            {
            case CC_BOOL:
                Value = reader.ReadBoolean();
                break;

            case CC_STRING:
                Value = reader.ReadString();
                break;

            case CC_UINT8:
                byte valb = reader.ReadByte();
                Value = valb;
                break;

            case CC_INT8:
                sbyte valsb = reader.ReadSByte();
                Value = valsb;
                break;

            case CC_UINT16:
                UInt16 valui16 = reader.ReadUInt16();
                Value = valui16;
                break;

            case CC_INT16:
                Int16 vali16 = reader.ReadInt16();
                Value = vali16;
                break;

            case CC_UINT32:
                UInt32 valui32 = reader.ReadUInt32();
                Value = valui32;
                break;

            case CC_INT32:
                Int32 vali32 = reader.ReadInt32();
                Value = vali32;
                break;

            case CC_UINT64:
                throw (new NotImplementedException());
                break;

            case CC_INT64:
                throw (new NotImplementedException());
                break;

            case CC_BOOL_ARRAY:
                throw (new NotImplementedException());
                break;

            case CC_STRING_ARRAY:
                throw (new NotImplementedException());
                break;

            case CC_UINT8_ARRAY:
                startIdx = reader.Read7BitEncodedUInt32();
                len      = reader.ReadByte();
                if (Value == null)
                {
                    Value = new byte[ArrayLen];
                }
                for (UInt32 i = startIdx; i < startIdx + len; i++)
                {
                    ((byte[])Value)[i] = reader.ReadByte();
                }
                break;

            case CC_INT8_ARRAY:
                startIdx = reader.Read7BitEncodedUInt32();
                len      = reader.ReadByte();
                if (Value == null)
                {
                    Value = new sbyte[ArrayLen];
                }
                for (UInt32 i = startIdx; i < startIdx + len; i++)
                {
                    ((sbyte[])Value)[i] = reader.ReadSByte();
                }
                break;

            case CC_UINT16_ARRAY:
                startIdx = reader.Read7BitEncodedUInt32();
                len      = reader.ReadByte();
                if (Value == null)
                {
                    Value = new UInt16[ArrayLen];
                }
                for (UInt32 i = startIdx; i < startIdx + len; i++)
                {
                    ((UInt16[])Value)[i] = reader.ReadUInt16();
                }
                break;

            case CC_INT16_ARRAY:
                startIdx = reader.Read7BitEncodedUInt32();
                len      = reader.ReadByte();
                if (Value == null)
                {
                    Value = new Int16[ArrayLen];
                }
                for (UInt32 i = startIdx; i < startIdx + len; i++)
                {
                    ((Int16[])Value)[i] = reader.ReadInt16();
                }
                break;

            case CC_UINT32_ARRAY:
                startIdx = reader.Read7BitEncodedUInt32();
                len      = reader.ReadByte();
                if (Value == null)
                {
                    Value = new UInt32[ArrayLen];
                }
                for (UInt32 i = startIdx; i < startIdx + len; i++)
                {
                    ((UInt32[])Value)[i] = reader.ReadUInt32();
                }
                break;

            case CC_INT32_ARRAY:
                startIdx = reader.Read7BitEncodedUInt32();
                len      = reader.ReadByte();
                if (Value == null)
                {
                    Value = new Int32[ArrayLen];
                }
                for (UInt32 i = startIdx; i < startIdx + len; i++)
                {
                    ((Int32[])Value)[i] = reader.ReadInt32();
                }
                break;

            case CC_UINT64_ARRAY:
                throw (new NotImplementedException());
                break;

            case CC_INT64_ARRAY:
                throw (new NotImplementedException());
                break;

            case CC_FLOAT:
                throw (new NotImplementedException());
                break;

            case CC_DOUBLE:
                throw (new NotImplementedException());
                break;

            case CC_FLOAT_ARRAY:
                throw (new NotImplementedException());
                break;

            case CC_DOUBLE_ARRAY:
                throw (new NotImplementedException());
                break;

            case CC_ENUMERATION:
                byte valenum = reader.ReadByte();
                Value = valenum;
                break;

            case CC_ENUMERATION_VALUES:
                startIdx = reader.ReadByte();
                len      = reader.ReadByte();
                string[] stringArray = new string[len];
                for (int i = 0; i < len; i++)
                {
                    stringArray[i] = reader.ReadString();
                }
                Value = stringArray;
                break;

            case CC_VOID_FUNCTION:
                throw (new NotImplementedException());
                break;
            }
        }