Rev 975 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed
| Rev 975 | Rev 976 | ||
|---|---|---|---|
| Line 62... | Line 62... | ||
| 62 | 62 | ||
| 63 | string address = Settings::get("CanNetAddress"); |
63 | string address = Settings::get("CanNetAddress"); |
| 64 | string port = Settings::get("CanNetPort"); |
64 | string port = Settings::get("CanNetPort"); |
| 65 | 65 | ||
| 66 | myChannel->setAddress(address, stoi(port)); |
66 | myChannel->setAddress(address, stoi(port)); |
| - | 67 | ||
| - | 68 | myChannel->setReconnectTimeout(10); |
|
| 67 | 69 | ||
| 68 | myChannel->start(); |
70 | myChannel->start(); |
| 69 | 71 | ||
| 70 | myChannel->startEvent(); |
72 | myChannel->startEvent(); |
| 71 | 73 | ||
| Line 76... | Line 78... | ||
| 76 | myChannel->waitForEvent(); |
78 | myChannel->waitForEvent(); |
| 77 | 79 | ||
| 78 | int event = myChannel->getEvent(); |
80 | int event = myChannel->getEvent(); |
| 79 | 81 | ||
| 80 | if (event == ASYNCSOCKET_EVENT_DATA) |
82 | if (event == ASYNCSOCKET_EVENT_DATA) |
| 81 | { |
83 | { |
| 82 | while (myChannel->availableData()) |
84 | while (myChannel->availableData()) |
| 83 | { |
85 | { |
| 84 | waitingForPong = false; |
86 | waitingForPong = false; |
| 85 | 87 | ||
| 86 | string data = myChannel->getData(); |
88 | string data = myChannel->getData(); |
| 87 | 89 | ||
| 88 | try |
90 | try |
| 89 | { |
91 | { |
| - | 92 | ///FIXME: Verify that \n is right here, have seen that it does not always work |
|
| 90 | vector<string> dataLines = explode("\n", data); |
93 | vector<string> dataLines = explode("\n", data); |
| 91 | 94 | ||
| 92 | for (int n = 0; n < dataLines.size(); n++) |
95 | for (int n = 0; n < dataLines.size(); n++) |
| 93 | { |
96 | { |
| 94 | data = trim(data, '\n'); |
97 | data = trim(data, '\n'); |
| 95 | 98 | ||
| 96 | if (data == "PONG") |
99 | if (data == "PONG") |
| 97 | { |
100 | { |
| 98 | slog << "Received pong.\n"; |
101 | slog << "Received pong.\n"; |
| 99 | continue; |
102 | continue; |
| 100 | } |
103 | } |
| Line 110... | Line 113... | ||
| 110 | } |
113 | } |
| 111 | /*else |
114 | /*else |
| 112 | { |
115 | { |
| 113 | slog << "Received unknown message. Skipping...\n"; |
116 | slog << "Received unknown message. Skipping...\n"; |
| 114 | }*/ |
117 | }*/ |
| 115 | } |
118 | } |
| 116 | } |
119 | } |
| 117 | catch (CanMessageException* e) |
120 | catch (CanMessageException* e) |
| 118 | { |
121 | { |
| 119 | slog << "CanMessageException was caught:\n"; |
122 | slog << "CanMessageException was caught:\n"; |
| 120 | slog << e->getDescription() |
123 | slog << e->getDescription() + "\n"; |
| 121 | } |
124 | } |
| 122 | } |
125 | } |
| 123 | } |
126 | } |
| 124 | else if (event == ASYNCSOCKET_EVENT_CLOSED) |
127 | else if (event == ASYNCSOCKET_EVENT_CLOSED) |
| 125 | { |
128 | { |
| 126 | vm.queueExpression("setAllOffline();"); |
129 | vm.queueExpression("setAllOffline();"); |
| - | 130 | } |
|
| - | 131 | else if (event == ASYNCSOCKET_EVENT_DIED) |
|
| - | 132 | { |
|
| - | 133 | vm.queueExpression("setAllOffline();"); |
|
| - | 134 | break; |
|
| 127 | } |
135 | } |
| 128 | else if (event == ASYNCSOCKET_EVENT_INACTIVITY) |
136 | else if (event == ASYNCSOCKET_EVENT_INACTIVITY) |
| 129 | { |
137 | { |
| 130 | if (waitingForPong) |
138 | if (waitingForPong) |
| 131 | { |
139 | { |
| Line 134... | Line 142... | ||
| 134 | vm.queueExpression("setAllOffline();"); |
142 | vm.queueExpression("setAllOffline();"); |
| 135 | myChannel->forceReconnect(); |
143 | myChannel->forceReconnect(); |
| 136 | } |
144 | } |
| 137 | else |
145 | else |
| 138 | { |
146 | { |
| 139 | slog |
147 | //slog << "We have not received anything from the canDaemon in some time.\n"; |
| 140 | waitingForPong = true; |
148 | waitingForPong = true; |
| 141 | slog << "Sending ping.\n"; |
149 | slog << "Sending ping.\n"; |
| 142 | myChannel->sendData("PING"); |
150 | myChannel->sendData("PING"); |
| 143 | } |
151 | } |
| 144 | 152 | ||