Rev 983 | Rev 999 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed
| Rev 983 | Rev 984 | ||
|---|---|---|---|
| Line 20... | Line 20... | ||
| 20 | ***************************************************************************/ |
20 | ***************************************************************************/ |
| 21 | 21 | ||
| 22 | #include "socketthread.h" |
22 | #include "socketthread.h" |
| 23 | #include "virtualmachine.h" |
23 | #include "virtualmachine.h" |
| 24 | 24 | ||
| 25 | SocketThread::SocketThread(string address, int port, unsigned int reconnectTimeout) |
25 | SocketThread::SocketThread(string address, unsigned int port, unsigned int reconnectTimeout) |
| 26 | { |
26 | { |
| 27 | myId = time(NULL); |
27 | myId = time(NULL); |
| 28 | 28 | ||
| 29 | mySocket = new AsyncSocket(); |
29 | mySocket = new AsyncSocket(); |
| 30 | 30 | ||
| 31 | mySocket->setAddress( |
31 | mySocket->setAddress(address); |
| - | 32 | mySocket->setPort(port); |
|
| 32 | mySocket->setReconnectTimeout(reconnectTimeout); |
33 | mySocket->setReconnectTimeout(reconnectTimeout); |
| 33 | - | ||
| 34 | Thread<SocketThread>(); |
- | |
| 35 | } |
34 | } |
| 36 | 35 | ||
| 37 | SocketThread::~SocketThread() |
36 | SocketThread::~SocketThread() |
| 38 | { |
37 | { |
| 39 | if (!stop()) |
38 | if (!stop()) |
| 40 | { |
39 | { |
| 41 | cout << "~SocketThread() :: Failed to stop thread :: Error code is " + itos(getError()) + "\n"; |
40 | cout << "~SocketThread() :: Failed to stop thread :: Error code is " + itos(getError()) + "\n"; |
| 42 | 41 | ||
| 43 | } |
42 | } |
| 44 |
|
43 | /* else |
| 45 | { |
44 | { |
| 46 |
|
45 | cout << "~SocketThread() :: Successfully stopped thread\n"; |
| 47 |
|
46 | }*/ |
| 48 | delete mySocket; |
47 | delete mySocket; |
| 49 | } |
48 | } |
| 50 | 49 | ||
| 51 | void SocketThread::run() |
50 | void SocketThread::run() |
| 52 | { |
51 | { |
| 53 | //SyslogStream &slog = SyslogStream::getInstance(); |
- | |
| 54 | VirtualMachine &vm = VirtualMachine::getInstance(); |
52 | VirtualMachine &vm = VirtualMachine::getInstance(); |
| 55 | 53 | ||
| 56 | mySocket->start(); |
54 | mySocket->start(); |
| 57 | 55 | ||
| 58 | mySocket-> |
56 | mySocket->eventStartListen(); |
| 59 | 57 | ||
| 60 | while ( |
58 | while (true) |
| 61 | { |
59 | { |
| 62 | mySocket-> |
60 | mySocket->eventWait(); |
| 63 | 61 | ||
| 64 | while (mySocket-> |
62 | while (mySocket->eventIsAvailable()) |
| 65 | { |
63 | { |
| 66 |
|
64 | SocketEvent socketEvent = mySocket->eventFetch(); |
| 67 | 65 | ||
| 68 |
|
66 | switch (socketEvent.getType()) |
| 69 | { |
67 | { |
| 70 |
|
68 | case SocketEvent::TYPE_CONNECTED: |
| - | 69 | vm.queueExpression("Socket.triggerSocketCallback(" + itos(myId) + ", 'CONNECTED', '" + escape(socketEvent.getData()) + "');"); |
|
| 71 |
|
70 | break; |
| - | 71 | ||
| 72 |
|
72 | case SocketEvent::TYPE_CONNECTING: |
| 73 |
|
73 | vm.queueExpression("Socket.triggerSocketCallback(" + itos(myId) + ", 'CONNECTING', '" + escape(socketEvent.getData()) + "');"); |
| 74 |
|
74 | break; |
| 75 | } |
75 | |
| 76 |
|
76 | case SocketEvent::TYPE_CONNECTION_CLOSED: |
| - | 77 | vm.queueExpression("Socket.triggerSocketCallback(" + itos(myId) + ", 'CLOSED', '" + escape(socketEvent.getData()) + "');"); |
|
| 77 |
|
78 | break; |
| - | 79 | ||
| - | 80 | case SocketEvent::TYPE_CONNECTION_DIED: |
|
| 78 | vm.queueExpression("Socket.triggerSocketCallback(" + itos(myId) + ", |
81 | vm.queueExpression("Socket.triggerSocketCallback(" + itos(myId) + ", 'DIED', '" + escape(socketEvent.getData()) + "');"); |
| 79 |
|
82 | break; |
| - | 83 | ||
| 80 |
|
84 | case SocketEvent::TYPE_CONNECTION_RESET: |
| 81 | { |
- | |
| 82 | vm.queueExpression("Socket.triggerSocketCallback(" + itos(myId) + ", |
85 | vm.queueExpression("Socket.triggerSocketCallback(" + itos(myId) + ", 'RESET', '" + escape(socketEvent.getData()) + "');"); |
| 83 |
|
86 | break; |
| - | 87 | ||
| 84 |
|
88 | case SocketEvent::TYPE_CONNECTION_FAILED: |
| - | 89 | vm.queueExpression("Socket.triggerSocketCallback(" + itos(myId) + ", 'CONNECTION_FAILED', '" + escape(socketEvent.getData()) + "');"); |
|
| 85 |
|
90 | break; |
| - | 91 | ||
| - | 92 | case SocketEvent::TYPE_DATA: |
|
| 86 | vm.queueExpression("Socket.triggerSocketCallback(" + itos(myId) + ", |
93 | vm.queueExpression("Socket.triggerSocketCallback(" + itos(myId) + ", 'DATA', '" + escape(socketEvent.getData()) + "');"); |
| 87 | break; |
94 | break; |
| 88 | } |
95 | |
| 89 |
|
96 | case SocketEvent::TYPE_INACTIVITY: |
| - | 97 | vm.queueExpression("Socket.triggerSocketCallback(" + itos(myId) + ", 'INACTIVITY', '" + escape(socketEvent.getData()) + "');"); |
|
| 90 | { |
98 | |
| - | 99 | case SocketEvent::TYPE_WAITING_RECONNECT: |
|
| 91 | vm.queueExpression("Socket.triggerSocketCallback(" + itos(myId) + ", |
100 | vm.queueExpression("Socket.triggerSocketCallback(" + itos(myId) + ", 'WAITING_RECONNECT', '" + escape(socketEvent.getData()) + "');"); |
| 92 | break; |
101 | break; |
| 93 | } |
- | |
| 94 | else if (event == ASYNCSOCKET_EVENT_INACTIVITY) |
- | |
| 95 | { |
- | |
| 96 | vm.queueExpression("Socket.triggerSocketCallback(" + itos(myId) + ", 'EVENT_INACTIVITY', '');"); |
- | |
| 97 | } |
- | |
| 98 | } |
102 | } |
| 99 | } |
103 | } |
| - | 104 | } |
|
| 100 | 105 | ||
| 101 | mySocket-> |
106 | mySocket->eventStopListen(); |
| 102 | } |
107 | } |
| 103 | 108 | ||
| 104 | void SocketThread::send(string data) |
109 | void SocketThread::send(string data) |
| 105 | { |
110 | { |
| 106 | - | ||
| 107 | mySocket->sendData(data); |
111 | mySocket->sendData(data); |
| 108 | } |
112 | } |
| 109 | 113 | ||