summaryrefslogtreecommitdiffstats
path: root/non-qt-api/python-example/testClient.py
blob: bc7d65eb27c8021f26bd829d4a1764497b9e2eea (plain)
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
#!/usr/bin/env python

import sys
import asyncore, socket
import json

counter = 0
registrationMessage = ""

class JsonClient(asyncore.dispatcher):

    def connectTCP(self,host,port):
        self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
        self.connect( (host, port) )

    def connectLocal(self,socketname):
        self.create_socket(socket.AF_UNIX, socket.SOCK_STREAM)
        self.connect(socketname)

    def handle_connect(self):
        global registrationMessage
        if not registrationMessage:
            client.send(registrationMessage)

    def handle_close(self):
        self.close()

    def handle_read(self):
        buf = self.recv(8192);
        print >> sys.stderr, 'receivedData:[',buf,']'
        receivedMessage(self,buf)

def sendMessage(client):
    global counter
    msg = { "text": "Standard text", "number" : counter, "int": 100,
        "float": 100.0, "true": True, "false": False, "array" : ["one", "two", "three"],
        "object" : { "item1": "This is item 1", "item2": "This is item 2"} }
    counter += 1
    print >> sys.stderr, 'sendMessageJSON:', json.dumps(msg)
    client.send(json.dumps(msg))

def receivedMessage(client,data):
    msg = json.loads(data);
    print >> sys.stderr, 'receivedMessage:[',msg,']'
    if 'command' in msg:
        print >> sys.stderr, "command: ", msg['command']
        command = msg['command']
        if command == "exit":
           sys.exit(0)
        elif command == "crash":
            sys.exit(1)
        elif command == "reply":
            sendMessage(client)
        elif command == "flurry":
            if 'count' in msg:
                for count in range(msg['count'], 0):
                    sendMessage();

if __name__ == "__main__":

    socketname = "/tmp/tst_socket"

    # retrive socketname from arguments list
    try:
        i = sys.argv.index('-socket')
        if i + 1 < len(sys.argv):
            socketname = sys.argv[i + 1]
    except ValueError:
        pass
    print >> sys.stderr, "socketname:", socketname

    client = JsonClient()
    client.connectLocal(socketname)

    sendMessage(client)

    asyncore.loop()