23#include "model/ocpn_utils.h"
28CmdlineAction LocalClientApi::ParseArgs(
const wxCmdLineParser& parser,
30 return CmdlineAction::Skip;
34CmdlineAction LocalClientApi::ParseArgs(
const wxCmdLineParser& parser,
36 CmdlineAction result = CmdlineAction::Fail;
38 if (parser.GetParamCount() == 0) {
39 result = CmdlineAction::Raise;
40 }
else if (parser.GetParamCount() == 1) {
41 if (parser.GetParam(0) ==
"raise") {
42 result = CmdlineAction::Raise;
43 }
else if (parser.GetParam(0) ==
"quit") {
44 result = CmdlineAction::Quit;
45 }
else if (parser.GetParam(0) ==
"get_rest_endpoint") {
46 result = CmdlineAction::GetRestEndpoint;
47 }
else if (ocpn::exists(parser.GetParam(0).ToStdString().c_str())) {
48 result = CmdlineAction::Open;
49 arg = parser.GetParam(0).ToStdString();
51 }
else if (parser.GetParamCount() == 2) {
52 if (parser.GetParam(0) ==
"open") {
53 result = CmdlineAction::Open;
54 arg = parser.GetParam(1).ToStdString();
61LocalApiResult LocalClientApi::HandleCmdline(
const wxCmdLineParser& parser) {
63 auto action = ParseArgs(parser, arg);
64 return HandleCmdline(action, arg);
67LocalApiResult LocalClientApi::HandleCmdline(CmdlineAction action,
68 const std::string& arg) {
70 case CmdlineAction::Fail:
71 MESSAGE_LOG <<
"IpcClient: Cannot parse command line (ignored)";
72 return LocalApiResult(
false,
"Cannot parse command line");
73 case CmdlineAction::Quit: {
74 auto result = SendQuit();
76 MESSAGE_LOG <<
"Error running remote quit cmd: " << result.second;
80 case CmdlineAction::Raise: {
81 auto result = SendRaise();
83 MESSAGE_LOG <<
"Error running remote raise cmd: " << result.second;
87 case CmdlineAction::Open: {
88 auto result = SendOpen(arg.c_str());
90 MESSAGE_LOG <<
"Error running remote open of file \"" << arg
91 <<
"\": " << result.second;
95 case CmdlineAction::GetRestEndpoint: {
96 auto result = GetRestEndpoint();
98 std::cout << result.second <<
"\n" << std::flush;
100 std::cout <<
"Error getting remote endpoint: " << result.second <<
"\n"
104 case CmdlineAction::Skip:
105 return LocalApiResult(
true,
"Unknown command CmdlineAction::Skip");
107 wxLogMessage(
"Strange code path!");
108 return LocalApiResult(
false,
"Internal error");
The local API has a server side handling commands and a client part issuing commands.
Enhanced logging interface on top of wx/log.h.