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 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
#ifndef CSCOMMANDHANDLERBASE_H
#define CSCOMMANDHANDLERBASE_H
#include "file_logger.h"
#include "JSON.h"
#include <cl_command_event.h>
#include <wx/event.h>
#include <wx/sharedptr.h>
#include <wx/string.h>
class csManager;
wxDECLARE_EVENT(wxEVT_COMMAND_PROCESSED, clCommandEvent);
#define CHECK_STR_PARAM(str_option, sVal) \
if(!options.hasNamedObject(str_option)) { \
clERROR() << "Command is missing field:" << str_option; \
NotifyCompletion(); \
return; \
} \
sVal = options.namedObject(str_option).toString();
#define CHECK_INT_PARAM(str_option, iVal) \
if(!options.hasNamedObject(str_option)) { \
clERROR() << "Command is missing field:" << str_option; \
NotifyCompletion(); \
return; \
} \
iVal = options.namedObject(str_option).toInt();
#define CHECK_BOOL_PARAM(str_option, bVal) \
if(!options.hasNamedObject(str_option)) { \
clERROR() << "Command is missing field:" << str_option; \
NotifyCompletion(); \
return; \
} \
bVal = options.namedObject(str_option).toBool();
#define CHECK_ARRSTR_PARAM(str_option, arrVal) \
if(!options.hasNamedObject(str_option)) { \
clERROR() << "Command is missing field:" << str_option; \
NotifyCompletion(); \
return; \
} \
arrVal = options.namedObject(str_option).toArrayString();
#define CHECK_STR_PARAM_OPTIONAL(str_option, sVal) \
if(options.hasNamedObject(str_option)) { sVal = options.namedObject(str_option).toString(); }
#define CHECK_INT_PARAM_OPTIONAL(str_option, iVal) \
if(options.hasNamedObject(str_option)) { iVal = options.namedObject(str_option).toInt(); }
#define CHECK_BOOL_PARAM_OPTIONAL(str_option, bVal) \
if(options.hasNamedObject(str_option)) { bVal = options.namedObject(str_option).toBool(); }
#define CHECK_ARRSTR_PARAM_OPTIONAL(str_option, arrVal) \
if(options.hasNamedObject(str_option)) { arrVal = options.namedObject(str_option).toArrayString(); }
class csCommandHandlerBase
{
protected:
csManager* m_manager;
bool m_notifyOnExit;
public:
typedef wxSharedPtr<csCommandHandlerBase> Ptr_t;
protected:
void NotifyCompletion();
void SetNotifyCompletion(bool b) { m_notifyOnExit = b; }
public:
/**
* @brief process a request from the command line and print the result to the stdout
* @param the handler options
*/
virtual void DoProcessCommand(const JSONItem& options) = 0;
public:
csCommandHandlerBase(csManager* manager);
virtual ~csCommandHandlerBase();
csManager* GetSink() { return m_manager; }
/**
* @brief process a request from the command line and print the result to the stdout
* @param the handler options
*/
void Process(const JSONItem& options);
};
#endif // CSCOMMANDHANDLERBASE_H
|