コード例 #1
0
        public static IVisualFactory GetVisualFactory(string topic, string rosMessageName = null, MessageSubtopic subtopic = MessageSubtopic.Default)
        {
            PrioritizedList <IVisualFactory> result;
            Dictionary <string, PrioritizedList <IVisualFactory> > topicsTable = (subtopic != MessageSubtopic.Response) ? s_TopicVisualFactories : s_TopicResponseVisualFactories;

            topicsTable.TryGetValue(topic, out result);
            if (result != null)
            {
                return(result.Best);
            }

            if (rosMessageName != null)
            {
                Dictionary <string, PrioritizedList <IVisualFactory> > typesTable = (subtopic != MessageSubtopic.Response) ? s_TypeVisualFactories : s_TypeResponseVisualFactories;
                typesTable.TryGetValue(rosMessageName, out result);
                if (result != null)
                {
                    return(result.Best);
                }

                if (MessageRegistry.GetDeserializeFunction(rosMessageName) != null)
                {
                    return((subtopic != MessageSubtopic.Response) ? s_DefaultVisualFactory : s_DefaultResponseVisualFactory);
                }
            }

            return(null);
        }
コード例 #2
0
        Message Deserialize(byte[] data)
        {
            if (m_Deserializer == null)
            {
                m_Deserializer = MessageRegistry.GetDeserializeFunction(m_RosMessageName, m_Subtopic);
            }

            m_ConnectionInternal.Deserializer.InitWithBuffer(data);
            return(m_Deserializer(m_ConnectionInternal.Deserializer));
        }
コード例 #3
0
        public void RegisterAndGet_OneMessage_ReturnsMessageNameAndDeserialize()
        {
            const string rosMessageName = "testmessage";
            Func <MessageDeserializer, TestMessage> deserializer = des => new TestMessage();

            MessageRegistry.Register(rosMessageName, deserializer);

            Assert.AreEqual(rosMessageName, MessageRegistry.GetRosMessageName <TestMessage>());
            Assert.AreEqual(deserializer, MessageRegistry.GetDeserializeFunction <TestMessage>());
            Assert.AreEqual(deserializer, MessageRegistry.GetDeserializeFunction(rosMessageName));
        }
コード例 #4
0
        public static IEnumerable <IVisualFactory> GetAllVisualFactories(string topic, string rosMessageName)
        {
            PrioritizedList <IVisualFactory> result;
            IEnumerable <IVisualFactory>     topicVisualizers = null;

            if (topic != null)
            {
                s_TopicVisualFactories.TryGetValue(topic, out result);
                if (result != null)
                {
                    topicVisualizers = result.All;
                }
            }

            IEnumerable <IVisualFactory> typeVisualizers = null;

            if (rosMessageName != null)
            {
                s_TypeVisualFactories.TryGetValue(rosMessageName, out result);
                if (result != null)
                {
                    typeVisualizers = result.All;
                }
                else if (MessageRegistry.GetDeserializeFunction(rosMessageName) != null)
                {
                    typeVisualizers = new IVisualFactory[] { s_DefaultVisualFactory }
                }
                ;
            }

            if (topicVisualizers == null)
            {
                return(typeVisualizers);
            }

            if (typeVisualizers != null)
            {
                return(topicVisualizers.Concat(typeVisualizers));
            }
            else
            {
                return(topicVisualizers);
            }
        }
    }
コード例 #5
0
        public void RegisterAndGet_Subtopics_ReturnCorrectDeserializers()
        {
            const string rosMessageName = "testmessage";
            Func <MessageDeserializer, TestMessage>  deserializer  = des => new TestMessage();
            Func <MessageDeserializer, TestResponse> deserializer2 = des => new TestResponse();

            MessageRegistry.Register(rosMessageName, deserializer, MessageSubtopic.Default);
            MessageRegistry.Register(rosMessageName, deserializer2, MessageSubtopic.Response);

            Assert.AreEqual(rosMessageName, MessageRegistry.GetRosMessageName <TestMessage>());
            Assert.AreEqual(rosMessageName, MessageRegistry.GetRosMessageName <TestResponse>());
            Assert.AreEqual(MessageSubtopic.Default, MessageRegistry.GetSubtopic <TestMessage>());
            Assert.AreEqual(MessageSubtopic.Response, MessageRegistry.GetSubtopic <TestResponse>());
            Assert.AreEqual(deserializer, MessageRegistry.GetDeserializeFunction <TestMessage>());
            Assert.AreEqual(deserializer, MessageRegistry.GetDeserializeFunction(rosMessageName, MessageSubtopic.Default));
            Assert.AreEqual(deserializer2, MessageRegistry.GetDeserializeFunction <TestResponse>());
            Assert.AreEqual(deserializer2, MessageRegistry.GetDeserializeFunction(rosMessageName, MessageSubtopic.Response));
            Assert.IsNull(MessageRegistry.GetDeserializeFunction(rosMessageName, MessageSubtopic.Goal));
        }