コード例 #1
0
        public void incrementSequence(string topic)
        {
            Publication pub = lookupPublication(topic);

            if (pub != null)
            {
                pub.incrementSequence();
            }
        }
コード例 #2
0
        public void publish(Publication p, RosMessage msg, SerializeFunc serfunc = null)
        {
            if (msg == null)
            {
                return;
            }
            if (serfunc == null)
            {
                serfunc = msg.Serialize;
            }
            if (p.connection_header == null)
            {
                p.connection_header = new Header {
                    Values = new Dictionary <string, string>()
                };
                p.connection_header.Values["type"]               = p.DataType;
                p.connection_header.Values["md5sum"]             = p.Md5sum;
                p.connection_header.Values["message_definition"] = p.MessageDefinition;
                p.connection_header.Values["callerid"]           = ThisNode.Name;
                p.connection_header.Values["latching"]           = Convert.ToString(p.Latch);
            }

            if (!ROS.ok || shuttingDown)
            {
                return;
            }

            if (p.HasSubscribers || p.Latch)
            {
                bool nocopy    = false;
                bool serialize = false;
                if (msg != null && msg.MessageType != "undefined/unknown")
                {
                    p.getPublishTypes(ref serialize, ref nocopy, msg.MessageType);
                }
                else
                {
                    serialize = true;
                }

                p.publish(new MessageAndSerializerFunc(msg, serfunc, serialize, nocopy));

                if (serialize)
                {
                    PollManager.Instance.poll_set.ContinueThreads();
                }
            }
            else
            {
                p.incrementSequence();
            }
        }