示例#1
0
class Topicmanger:
    def __init__(self, args, dp, qos, waitset):
        self.topic_name = args.topic
        self.seq = -1
        try:
            int_topic = Topic(dp, self.topic_name + "int", Integer, qos=qos)
            str_topic = Topic(dp, self.topic_name, String, qos=qos)
            self.int_writer = DataWriter(dp, int_topic, qos=qos)
            self.int_reader = DataReader(dp, int_topic, qos=qos)
            self.str_writer = DataWriter(dp, str_topic, qos=qos)
            self.str_reader = DataReader(dp, str_topic, qos=qos)
        except DDSException:
            raise SystemExit("Error: The arguments inputted are considered invalid for cyclonedds.")
        self.read_cond = ReadCondition(self.int_reader, ViewState.Any | InstanceState.Alive | SampleState.NotRead)
        waitset.attach(self.read_cond)

    def write(self, input):
        self.seq += 1
        if type(input) is int:
            msg = Integer(self.seq, input)
            self.int_writer.write(msg)
        else:
            msg = String(self.seq, input)
            self.str_writer.write(msg)

    def read(self):
        for sample in self.int_reader.take(N=100):
            print("Subscribed:", sample)
        for sample in self.str_reader.take(N=100):
            print("Subscribed:", sample)
示例#2
0
def test_reader_invalid():
    dp = DomainParticipant(0)
    tp = Topic(dp, "Message__DONOTPUBLISH", Message)
    sub = Subscriber(dp)
    dr = DataReader(sub, tp)

    with pytest.raises(TypeError):
        dr.read(-1)

    with pytest.raises(TypeError):
        dr.take(-1)
示例#3
0
def test_reader_take():
    dp = DomainParticipant(0)
    tp = Topic(dp, "Message__DONOTPUBLISH", Message)
    sub = Subscriber(dp)
    dr = DataReader(sub, tp)

    assert len(dr.take()) == 0