Ejemplo n.º 1
0
def main():
    managers = []
    args = create_parser()
    dp = DomainParticipant(args.id)
    topics = parse_args(args)
    waitset = WaitSet(dp)

    for topic_type, topic in topics:
        managers.append(TopicManager(BuiltinDataReader(dp, topic), topic_type, args))
        managers[-1].add_to_waitset(waitset)
    if args.watch:
        try:
            while True:
                for manager in managers:
                    waitset.wait(duration(milliseconds=20))
                    manager.poll()
        except KeyboardInterrupt:
            pass
    else:
        for manager in managers:
            manager.poll()

    if args.filename:
        try:
            with open(args.filename, 'w') as f:
                Output.to_file(manager, managers, f)
                print("\nResults have been written to file", args.filename, "\n")
        except OSError:
            print("could not open file")
            return 1
    return 0
Ejemplo n.º 2
0
def manage_dcps_object(dp, topic_type, topic):
    dr = BuiltinDataReader(dp, topic)
    samples = dr.take_iter(timeout=duration(milliseconds=10))

    for sample in samples:
        if topic_type == 'PARTICIPANT':
            sample = {topic_type: [{"key": str(sample.key)}]}
        else:
            sample = {
                topic_type: [{
                    "key": str(sample.key),
                    "participant_key": str(sample.participant_key),
                    "topic_name": sample.topic_name,
                    "qos": sample.qos.asdict()
                }]
            }
        return sample
Ejemplo n.º 3
0
def main(sys_args):
    JsonWriter.reset()
    managers = []
    args = create_parser(sys_args)
    dp = DomainParticipant(args.id)
    topics = parse_args(args)
    waitset = WaitSet(dp)

    for topic_type, topic in topics:
        # Create TopicManager for each topic
        managers.append(
            TopicManager(BuiltinDataReader(dp, topic), topic_type, args))
        managers[-1].add_to_waitset(waitset)

    if not args.filename and args.json:
        print("[")

    # Watchmode
    if args.watch:
        try:
            time_start = datetime.datetime.now()
            v = True
            while v:
                for manager in managers:
                    waitset.wait(duration(milliseconds=20))
                    manager.poll()
                if args.runtime:
                    v = datetime.datetime.now(
                    ) < time_start + datetime.timedelta(seconds=args.runtime)
        except KeyboardInterrupt:
            pass
    # Non-watchmode
    else:
        time_start = datetime.datetime.now()
        runtime = args.runtime or 1
        while datetime.datetime.now() < time_start + datetime.timedelta(
                seconds=runtime):
            for manager in managers:
                manager.poll()

    if not args.filename and args.json:
        print("]")

    # Write to file
    if args.filename:
        try:
            with open(args.filename, 'w') as f:
                data = {
                    manager.topic_type: manager.as_dict()
                    for manager in managers
                }
                json.dump(data, f, indent=4)
                print(f"\nResults have been written to file {args.filename}\n")
        except OSError:
            raise Exception(f"Could not open file {args.filename}")
    return 0
Ejemplo n.º 4
0
def test_builtin_dcps_participant():
    dp = DomainParticipant(0)
    sub = Subscriber(dp)
    dr1 = BuiltinDataReader(sub, BuiltinTopicDcpsParticipant)
    dr2 = BuiltinDataReader(sub, BuiltinTopicDcpsSubscription)

    assert isgoodentity(dr1)
    assert isgoodentity(dr2)
    assert dr1.take_next().key == dp.guid
    msg = dr2.take(N=2)
    assert [msg[0].key, msg[1].key] == [dr1.guid, dr2.guid] or \
           [msg[0].key, msg[1].key] == [dr2.guid, dr1.guid]
Ejemplo n.º 5
0
def test_builtin_dcps_participant():
    dp = DomainParticipant(0)
    sub = Subscriber(dp)
    dr1 = BuiltinDataReader(sub, BuiltinTopicDcpsParticipant)
    dr2 = BuiltinDataReader(sub, BuiltinTopicDcpsSubscription)

    assert isgoodentity(dr1)
    assert isgoodentity(dr2)

    for msg in dr1.read_iter(timeout=duration(milliseconds=10)):
        assert msg.key == dp.guid

    for msg in dr2.take_iter(timeout=duration(milliseconds=10)):
        msg.key in [dr1.guid, dr2.guid]
Ejemplo n.º 6
0
def discover_datatype(participant, topic_name: str):
    drp = BuiltinDataReader(participant, BuiltinTopicDcpsPublication)
    drpc = ReadCondition(drp, InstanceState.Alive)
    drs = BuiltinDataReader(participant, BuiltinTopicDcpsSubscription)
    drsc = ReadCondition(drs, InstanceState.Alive)
    ws = WaitSet(participant)
    ws.attach(drp)
    ws.attach(drs)

    while True:
        for s in drp.take_iter(condition=drpc,
                               timeout=duration(milliseconds=1)):
            if s.topic_name == topic_name and s.type_id is not None:
                return get_types_for_typeid(participant, s.type_id,
                                            duration(seconds=5))
        for s in drs.take_iter(condition=drsc,
                               timeout=duration(milliseconds=1)):
            if s.topic_name == topic_name and s.type_id is not None:
                return get_types_for_typeid(participant, s.type_id,
                                            duration(seconds=5))

        ws.wait(duration(milliseconds=4))
Ejemplo n.º 7
0
from cyclonedds.domain import DomainParticipant
from cyclonedds.builtin import BuiltinDataReader, BuiltinTopicDcpsParticipant
from cyclonedds.util import duration

dp = DomainParticipant()
dr = BuiltinDataReader(dp, BuiltinTopicDcpsParticipant)

for sample in dr.take_iter(timeout=duration(milliseconds=10)):
    print(sample)