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) { } }
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; } }