Subversion Repositories HomeAutomation

Rev

Rev 1664 | Rev 1674 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 1664 Rev 1665
Line 109... Line 109...
109
    }
109
    }
110
   
110
   
111
private:
111
private:
112
    net::ClientId client_id_;
112
    net::ClientId client_id_;
113
    std::string prompt_;
113
    std::string prompt_;
114
   
-
 
115
   
114
   
116
    void SlotOnNewStateHandler(net::ClientId client_id, net::ServerId server_id, net::ClientState client_state)
115
    void SlotOnNewStateHandler(net::ClientId client_id, net::ServerId server_id, net::ClientState client_state)
117
    {
116
    {
118
        if (client_state != net::CLIENT_STATE_CONNECTED)
117
        if (client_state != net::CLIENT_STATE_CONNECTED)
119
        {
118
        {
Line 152... Line 151...
152
                    std::string payload = s.substr(8, payload_length - 1);
151
                    std::string payload = s.substr(8, payload_length - 1);
153
                   
152
                   
154
                    if (payload.length() > 0)
153
                    if (payload.length() > 0)
155
                    {
154
                    {
156
                        boost::algorithm::split(autocomplete_list, payload, boost::is_any_of("\n"), boost::algorithm::token_compress_on);
155
                        boost::algorithm::split(autocomplete_list, payload, boost::is_any_of("\n"), boost::algorithm::token_compress_on);
157
                    }
156
                    }
158
                }
157
                }
159
               
158
               
160
                on_message_condition.notify_all();
159
                on_message_condition.notify_all();
161
            }
160
            }
162
            else
161
            else
163
            {
162
            {
164
                std::cerr << "Unknown data received: " << s << std::endl;
163
                std::cerr << "Unknown data received: " << s << std::endl;
165
                finish = true;
164
                finish = true;
166
                on_message_condition.notify_all();
165
                on_message_condition.notify_all();
167
                break;
166
                break;
168
            }
167
            }
169
           
168
           
170
            if (8 + payload_length >= s.length())
169
            if (8 + payload_length >= s.length())
171
            {
170
            {
172
                break;
171
                break;
173
            }
172
            }
174
           
173
           
175
            s = s.substr(8 + payload_length);
174
            s = s.substr(8 + payload_length);
176
        }
175
        }
177
    }
176
    }
178
};
177
};
179
 
178
 
180
ConsoleClient::Pointer cc;
179
ConsoleClient::Pointer cc;
181
 
180
 
182
 
181
 
183
int main(int argc, char **argv)
182
int main(int argc, char **argv)
184
{
183
{
185
    // Signal handlers
184
    // Signal handlers
186
    signal(SIGTERM, Handler);
185
    signal(SIGTERM, Handler);
187
    signal(SIGINT, Handler);
186
    signal(SIGINT, Handler);
Line 222... Line 221...
222
        return EXIT_FAILURE;
221
        return EXIT_FAILURE;
223
    }
222
    }
224
    catch (boost::program_options::invalid_syntax e)
223
    catch (boost::program_options::invalid_syntax e)
225
    {
224
    {
226
        std::cerr << e.what() << std::endl;
225
        std::cerr << e.what() << std::endl;
227
        std::cout << command_line << std::endl;
226
        std::cout << command_line << std::endl;
228
        CleanUp();
227
        CleanUp();
229
        return EXIT_FAILURE;
228
        return EXIT_FAILURE;
230
    }
229
    }
231
   
230
   
232
    if (variable_map.count("help") != 0)
231
    if (variable_map.count("help") != 0)
233
    {
232
    {
234
        std::cout << command_line << std::endl;
233
        std::cout << command_line << std::endl;
235
        CleanUp();
234
        CleanUp();
236
        return EXIT_SUCCESS;
235
        return EXIT_SUCCESS;
237
    }
236
    }
238
   
237
   
239
    net::Manager::Create();
238
    net::Manager::Create();
240
 
239
 
241
    if (variable_map["command"].as<std::string>() == "")
240
    if (variable_map["command"].as<std::string>() == "")
242
    {
241
    {
243
        std::cout << "\033[29;1mAtom Interactive Console, version " + std::string(VERSION) + " starting...\033[0m" << std::endl;
242
        std::cout << "\033[29;1mAtom Interactive Console, version " + std::string(VERSION) + " starting...\033[0m" << std::endl;
244
        std::cout << "\033[29;1mReleased under GPL version 2.\033[0m" << std::endl;
243
        std::cout << "\033[29;1mReleased under GPL version 2.\033[0m" << std::endl;
245
        std::cout << "Written by Mattias Runge 2010." << std::endl;
244
        std::cout << "Written by Mattias Runge 2010." << std::endl;
246
       
245
       
247
        std::cout << "Connecting to " << variable_map["server"].as<std::string>().data() << ":" << variable_map["port"].as<unsigned int>() << "..." << std::endl;
246
        std::cout << "Connecting to " << variable_map["server"].as<std::string>().data() << ":" << variable_map["port"].as<unsigned int>() << "..." << std::endl;
248
    }
247
    }
249
   
248
   
250
    try
249
    try
251
    {
250
    {
252
        cc = ConsoleClient::Pointer(new ConsoleClient(variable_map["server"].as<std::string>(), variable_map["port"].as<unsigned int>()));
251
        cc = ConsoleClient::Pointer(new ConsoleClient(variable_map["server"].as<std::string>(), variable_map["port"].as<unsigned int>()));
253
    }
252
    }
254
    catch (std::runtime_error& e)
253
    catch (std::runtime_error& e)
Line 285... Line 284...
285
                break;
284
                break;
286
            }
285
            }
287
           
286
           
288
            while ((buffer = readline(cc->GetPrompt().data())) != NULL)
287
            while ((buffer = readline(cc->GetPrompt().data())) != NULL)
289
            {
288
            {
-
 
289
                if (finish)
-
 
290
                {
-
 
291
                    break;
-
 
292
                }
-
 
293
               
290
                if (strlen(buffer) == 0)
294
                if (strlen(buffer) == 0)
291
                {
295
                {
292
                    continue;
296
                    continue;
293
                }
297
                }
294
               
298
               
-
 
299
                break;
-
 
300
            }
-
 
301
           
-
 
302
            if (finish)
-
 
303
            {
295
                break;
304
                break;
296
            }
305
            }
297
           
306
           
298
            cc->SendResponse(buffer);
307
            cc->SendResponse(buffer);
299
            add_history(buffer);
308
            add_history(buffer);