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)
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)
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