protected List <MessageElement> PackPacket(T data, TimeSpec time)
        {
            List <MessageElement> timespec1 = new List <MessageElement>();

            timespec1.Add(new MessageElement("seconds", time.seconds));
            timespec1.Add(new MessageElement("nanoseconds", time.nanoseconds));
            MessageElementStructure s = new MessageElementStructure("RobotRaconteur.TimeSpec", timespec1);


            List <MessageElement> elems = new List <MessageElement>();

            elems.Add(new MessageElement("packettime", s));
            if (!rawelements)
            {
                object pdata = PackAnyType(ref data);
                elems.Add(new MessageElement("packet", pdata));
            }
            else
            {
                MessageElement pme = ((MessageElement)(object)data);
                pme.ElementName = "packet";
                elems.Add(pme);
            }


            return(elems);
        }
Пример #2
0
        public virtual T UnpackStructure <T>(MessageElementStructure l)
        {
            string typename;

            if (CompareNamespace(l.Type, out typename))
            {
                return((T)FindStructureStub(typename).UnpackStructure <T>(l));
            }
            else
            {
                return(node.UnpackStructure <T>(l, context));
            }
        }
        public T UnpackStructure <T>(MessageElementStructure m)
        {
            if (m == null)
            {
                return(default(T));
            }
            ostruct2 s = new ostruct2();

            s.a1 = MessageElementUtil.UnpackArray <double>(MessageElement.FindElement(m.Elements, "a1"));
            T st; try { st = (T)((object)s); } catch (InvalidCastException) { throw new DataTypeMismatchException("Wrong structuretype"); }

            return(st);
        }
        public T UnpackStructure <T>(MessageElementStructure m)
        {
            if (m == null)
            {
                return(default(T));
            }
            NodeInfo s = new NodeInfo();

            s.NodeName = MessageElement.FindElement(m.Elements, "NodeName").CastData <string>();
            s.NodeID   = MessageElement.FindElement(m.Elements, "NodeID").CastData <byte[]>();
            s.ServiceIndexConnectionURL = (Dictionary <int, string>)def.UnpackMapType <int, string>(MessageElement.FindElement(m.Elements, "ServiceIndexConnectionURL").Data);
            T st; try { st = (T)((object)s); } catch (InvalidCastException e) { throw new DataTypeMismatchException("Wrong structuretype"); }

            return(st);
        }
        public T UnpackStructure <T>(MessageElementStructure m)
        {
            if (m == null)
            {
                return(default(T));
            }
            FTData s = new FTData();

            using (vectorptr_messageelement mm = m.Elements)
            {
                s.time    = (MessageElementUtil.CastDataAndDispose <long[]>(MessageElement.FindElement(mm, "time")))[0];
                s.ft_data = MessageElementUtil.CastDataAndDispose <double[]>(MessageElement.FindElement(mm, "ft_data"));
                T st; try { st = (T)((object)s); } catch (InvalidCastException) { throw new DataTypeMismatchException("Wrong structuretype"); }
                return(st);
            }
        }
        public T UnpackStructure <T>(MessageElementStructure m)
        {
            if (m == null)
            {
                return(default(T));
            }
            ServiceInfo s = new ServiceInfo();

            s.Name                 = MessageElement.FindElement(m.Elements, "Name").CastData <string>();
            s.RootObjectType       = MessageElement.FindElement(m.Elements, "RootObjectType").CastData <string>();
            s.RootObjectImplements = (Dictionary <int, string>)def.UnpackMapType <int, string>(MessageElement.FindElement(m.Elements, "RootObjectImplements").Data);
            s.ConnectionURL        = (Dictionary <int, string>)def.UnpackMapType <int, string>(MessageElement.FindElement(m.Elements, "ConnectionURL").Data);
            s.Attributes           = (Dictionary <string, object>)def.UnpackMapType <string, object>(MessageElement.FindElement(m.Elements, "Attributes").Data);
            T st; try { st = (T)((object)s); } catch (InvalidCastException e) { throw new DataTypeMismatchException("Wrong structuretype"); }

            return(st);
        }
        protected T UnpackPacket(List <MessageElement> me, out TimeSpec timespec)
        {
            MessageElementStructure s = (MessageElement.FindElement(me, "packettime").CastData <MessageElementStructure>());
            long seconds     = MessageElement.FindElement(s.Elements, "seconds").CastData <long[]>()[0];
            int  nanoseconds = MessageElement.FindElement(s.Elements, "nanoseconds").CastData <int[]>()[0];

            timespec = new TimeSpec(seconds, nanoseconds);
            object data;

            if (!rawelements)
            {
                data = UnpackAnyType(MessageElement.FindElement(me, "packet"));
            }
            else
            {
                data = MessageElement.FindElement(me, "packet");
            }

            return((T)data);
        }
        public override T UnpackStructure <T>(MessageElementStructure l)
        {
            if (l == null)
            {
                return(default(T));
            }
            if (ServiceDefinitionUtil.SplitQualifiedName(l.Type).Item1 == "RobotRaconteurServiceIndex")
            {
                string objshort = RemovePath(l.Type);
                switch (objshort)
                {
                case "NodeInfo":
                    return(NodeInfo_stubentry.UnpackStructure <T>(l));

                case "ServiceInfo":
                    return(ServiceInfo_stubentry.UnpackStructure <T>(l));
                }
            }
            else
            {
                return(base.UnpackStructure <T>(l));
            }
            throw new DataTypeException("Could not unpack structure");
        }
        public override T UnpackStructure <T>(MessageElementStructure l)
        {
            if (l == null)
            {
                return(default(T));
            }
            if (RobotRaconteurNode.SplitQualifiedName(l.Type)[0].TrimEnd(new char[] { '_' }) == "sensors.ati.mini45")
            {
                string objshort = RemovePath(l.Type);
                switch (objshort)
                {
                case "FTData":
                    return(FTData_stubentry.UnpackStructure <T>(l));

                default:
                    break;
                }
            }
            else
            {
                return(RobotRaconteurNode.s.UnpackStructure <T>(l));
            }
            throw new DataTypeException("Could not unpack structure");
        }
Пример #10
0
 public T UnpackStructure <T>(MessageElementStructure l)
 {
     return(ServiceDef.UnpackStructure <T>(l));
 }