File: subscriberfiltertest.py

package info (click to toggle)
robotraconteur 1.2.7-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 101,380 kB
  • sloc: cpp: 1,149,268; cs: 87,653; java: 58,127; python: 26,897; ansic: 356; sh: 152; makefile: 90; xml: 51
file content (93 lines) | stat: -rw-r--r-- 3,014 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
from RobotRaconteur.Client import *
import sys
import time

try:
    raw_input  # type: ignore
except NameError:
    raw_input = input


def main():

    if (len(sys.argv) < 2):
        print("Usage for subscriberfiltertest: subscriberfiltertest servicetype")
        return

    service_type = sys.argv[1]

    f = RR.ServiceSubscriptionFilter()
    if (len(sys.argv) >= 4):
        subcommand = sys.argv[2]

        if (subcommand == "nodeid"):
            if (len(sys.argv) < 4):
                raise Exception(
                    "Usage for subscriberfiltertest:  subscriberfiltertest nodeid <nodeid>")

            n = RR.ServiceSubscriptionFilterNode()
            n.NodeID = RR.NodeID(sys.argv[3])
            f.Nodes.append(n)
        elif (subcommand == "nodename"):
            if (len(sys.argv) < 4):
                raise Exception(
                    "Usage for subscriberfiltertest:  subscriberfiltertest nodename <nodename>")

            n = RR.ServiceSubscriptionFilterNode()
            n.NodeName = sys.argv[3]
            f.Nodes.append(n)
        elif (subcommand == "nodeidscheme"):
            if (len(sys.argv) < 5):
                raise Exception(
                    "Usage for subscriberfiltertest:  subscriberfiltertest nodeidscheme <nodeid> <schemes>")

            n = RR.ServiceSubscriptionFilterNode()
            n.NodeID = RR.NodeID(sys.argv[3])
            f.Nodes.append(n)
            f.TransportSchemes = sys.argv[4].split(',')
        elif (subcommand == "nodeidauth"):
            if (len(sys.argv) < 6):
                raise Exception(
                    "Usage for subscriberfiltertest:  subscriberfiltertest nodeidauth <nodeid> <username> <password>")

            n = RR.ServiceSubscriptionFilterNode()
            n.NodeID = RR.NodeID(sys.argv[3])
            n.Username = sys.argv[4]
            n.Credentials = {'password': RR.VarValue(sys.argv[6], 'string')}
            f.Nodes.append(n)
        elif (subcommand == "servicename"):
            if (len(sys.argv) < 4):
                raise Exception(
                    "Usage for subscriberfiltertest:  subscriberfiltertest servicename <servicename>")
            f.ServiceNames.append(sys.argv[3])

        elif (subcommand == "predicate"):

            def pred(serviceinfo):
                print(serviceinfo.NodeName)
                return serviceinfo.NodeName == 'testprog'

            f.Predicate = pred

        else:
            raise Exception("Unknown subscriberfiltertest subcommand")

    s = RRN.SubscribeServiceByType(service_type, f)

    def connected(s, client_id, client):
        print("Client connected: " + str(client_id.NodeID) +
              "," + client_id.ServiceName)

    def disconnected(s, client_id, client):
        print("Client disconnected: " + str(client_id.NodeID) +
              "," + client_id.ServiceName)
    s.ClientConnected += connected
    s.ClientDisconnected += disconnected

    raw_input("Press enter")

    return


if __name__ == "__main__":
    main()