Changeset 2018659 in nscp for service/NSClient++.cpp
- Timestamp:
- 01/31/10 11:45:02 (3 years ago)
- Branches:
- master, 0.4.0, 0.4.1, 0.4.2
- Children:
- 920626f
- Parents:
- c4d4219
- File:
-
- 1 edited
-
service/NSClient++.cpp (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
service/NSClient++.cpp
r50a5db2 r2018659 39 39 #include "settings_client.hpp" 40 40 #include "service_manager.hpp" 41 42 #include "../proto/plugin.pb.h" 41 43 42 44 NSClient mainClient(SZSERVICENAME); // Global core instance. … … 373 375 args += argv[i]; 374 376 } 375 nRetCode = mainClient.inject(command, args, L' ', true,msg, perf);377 nRetCode = mainClient.inject(command, args, msg, perf); 376 378 std::wcout << msg << _T("|") << perf << std::endl; 377 379 mainClient.exitCore(true); … … 1022 1024 } 1023 1025 1024 NSCAPI::nagiosReturn NSClientT::inject(std::wstring command, std::wstring arguments, wchar_t splitter, bool escape,std::wstring &msg, std::wstring & perf) {1026 NSCAPI::nagiosReturn NSClientT::inject(std::wstring command, std::wstring arguments, std::wstring &msg, std::wstring & perf) { 1025 1027 /*if (shared_client_.get() != NULL && shared_client_->hasMaster()) { 1026 1028 try { … … 1034 1036 } 1035 1037 } else */{ 1036 unsigned int aLen = 0; 1037 wchar_t ** aBuf = arrayBuffer::split2arrayBuffer(arguments, splitter, aLen, escape); 1038 unsigned int buf_len = getBufferLength(); 1039 wchar_t * mBuf = new wchar_t[buf_len+1]; mBuf[0] = '\0'; 1040 wchar_t * pBuf = new wchar_t[buf_len+1]; pBuf[0] = '\0'; 1041 NSCAPI::nagiosReturn ret = injectRAW(command.c_str(), aLen, aBuf, mBuf, buf_len, pBuf, buf_len); 1042 arrayBuffer::destroyArrayBuffer(aBuf, aLen); 1038 PluginCommand::RequestMessage message; 1039 PluginCommand::Header *hdr = message.mutable_header(); 1040 hdr->set_type(PluginCommand::Header_Type_REQUEST); 1041 hdr->set_version(PluginCommand::Header_Version_VERSION_1); 1042 1043 PluginCommand::Request *req = message.add_payload(); 1044 req->set_command(to_string(command)); 1045 req->set_version(PluginCommand::Request_Version_VERSION_1); 1046 1047 std::string args = to_string(arguments); 1048 boost::tokenizer<boost::escaped_list_separator<char> > tok(args, boost::escaped_list_separator<char>('\\', ' ', '\"')); 1049 BOOST_FOREACH(string s, tok) 1050 req->add_arguments(s); 1051 1052 std::string request, response; 1053 message.SerializeToString(&request); 1054 1055 1056 1057 NSCAPI::nagiosReturn ret = injectRAW(command.c_str(), request, response); 1058 if (response.empty()) { 1059 LOG_ERROR(_T("No data retutned from command")); 1060 return NSCAPI::returnUNKNOWN; 1061 } 1062 1063 PluginCommand::ResponseMessage rsp_msg; 1064 rsp_msg.ParseFromString(response); 1065 if (rsp_msg.payload_size() != 1) { 1066 LOG_ERROR_STD(_T("Failed to extract return message not 1 payload: ") + strEx::itos(rsp_msg.payload_size())); 1067 return NSCAPI::returnUNKNOWN; 1068 } 1069 msg = to_wstring(rsp_msg.payload(0).message()); 1043 1070 if ( (ret == NSCAPI::returnInvalidBufferLen) || (ret == NSCAPI::returnIgnored) ) { 1044 delete [] mBuf;1045 delete [] pBuf;1046 1071 return ret; 1047 1072 } 1048 msg = mBuf;1049 perf = pBuf;1050 delete [] mBuf;1051 delete [] pBuf;1052 1073 return ret; 1053 1074 } … … 1066 1087 * @return The command status 1067 1088 */ 1068 NSCAPI::nagiosReturn NSClientT::injectRAW(const wchar_t* command, const unsigned int argLen, wchar_t **argument, wchar_t *returnMessageBuffer, unsigned int returnMessageBufferLen, wchar_t *returnPerfBuffer, unsigned int returnPerfBufferLen) {1089 NSCAPI::nagiosReturn NSClientT::injectRAW(const wchar_t* command, std::string &request, std::string &response) { 1069 1090 if (logDebug()) { 1070 LOG_DEBUG_STD(_T("Injecting: ") + (std::wstring) command + _T(": ") + arrayBuffer::arrayBuffer2string(argument, argLen, _T(", ")));1091 LOG_DEBUG_STD(_T("Injecting: ") + std::wstring(command) + _T(": {{{") + strEx::strip_hex(to_wstring(request)) + _T("}}}")); 1071 1092 } 1072 1093 /*if (shared_client_.get() != NULL && shared_client_->hasMaster()) { … … 1093 1114 for (pluginList::size_type i = 0; i < commandHandlers_.size(); i++) { 1094 1115 try { 1095 NSCAPI::nagiosReturn c = commandHandlers_[i]->handleCommand(command, argLen, argument, returnMessageBuffer, returnMessageBufferLen, returnPerfBuffer, returnPerfBufferLen);1116 NSCAPI::nagiosReturn c = commandHandlers_[i]->handleCommand(command, request, response); 1096 1117 switch (c) { 1097 1118 case NSCAPI::returnInvalidBufferLen: … … 1104 1125 case NSCAPI::returnCRIT: 1105 1126 case NSCAPI::returnUNKNOWN: 1106 LOG_DEBUG_STD(_T("Injected Result: ") + NSCHelper::translateReturn(c) + _T(" '") + (std::wstring)(returnMessageBuffer) + _T("'")); 1107 LOG_DEBUG_STD(_T("Injected Performance Result: '") +(std::wstring)(returnPerfBuffer) + _T("'")); 1127 LOG_DEBUG_STD(_T("Result ") + std::wstring(command) + _T(": ") + NSCHelper::translateReturn(c) + _T(" {{{") + strEx::strip_hex(to_wstring(response)) + _T("}}}")); 1108 1128 return c; 1109 1129 default:
Note: See TracChangeset
for help on using the changeset viewer.








