source: nscp/modules/SampleManagedPlugin/SampleManagedPlugin.h @ 739db5a

0.4.00.4.10.4.2
Last change on this file since 739db5a was 739db5a, checked in by Michael Medin <michael@…>, 5 years ago

First attempt at merging stable changes over to here (probably needs more work, but compiles and starts...)

  • Property mode set to 100644
File size: 1.8 KB
Line 
1// SampleManagedPlugin.h
2
3#pragma once
4
5#include <vcclr.h>
6#include <strEx.h>
7#using <mscorlib.dll>
8using namespace System;
9using namespace System::Runtime::InteropServices;
10using namespace System::Collections::Generic;
11
12template <class target>
13class SampleManagedPlugin {
14        gcroot<target^> managedInstance;
15private:
16        std::wstring strcvt(String^ str) {
17                pin_ptr<const wchar_t> wch = PtrToStringChars(str);
18                std::wstring ret = wch;
19                return ret;
20        }
21        String^ strcvt(std::wstring str) {
22                return Marshal::PtrToStringUni((IntPtr)const_cast<wchar_t*>(str.c_str()));
23        }
24public:
25        bool loadModule() {
26                return managedInstance->loadModule();
27        }
28        bool unloadModule() {
29                return managedInstance->unloadModule();
30        }
31
32        std::wstring getModuleName() {
33                return strcvt(managedInstance->getModuleName());
34        }
35        std::wstring getModuleDescription() {
36                return strcvt(managedInstance->getModuleDescription());
37        }
38        NSCModuleWrapper::module_version getModuleVersion() {
39                gcroot<CsharpSamplePlugin::SamplePlugin::version^> v = managedInstance->getModuleVersion();
40                NSCModuleWrapper::module_version version = {v->major, v->minor, v->revision};
41                return version;
42        }
43
44        bool hasCommandHandler() {
45                return managedInstance->hasCommandHandler();
46        }
47        bool hasMessageHandler() {
48                return managedInstance->hasMessageHandler();
49        }
50        NSCAPI::nagiosReturn handleCommand(const strEx::blindstr command, const unsigned int argLen, TCHAR **char_args, std::wstring &message, std::wstring &perf) {
51                String ^mCmd = strcvt(command.c_str());
52                List<String^>^ args;
53                for (int i=0;i<argLen;i++)
54                        args->Add(strcvt(char_args[i]));
55                String ^mMsg;
56                String ^mPerf;
57                int ret = managedInstance->handleCommand(mCmd, args, mMsg, mPerf);
58                message = strcvt(mMsg);
59                perf = strcvt(mPerf);
60                return ret;
61        }
62};
63
64NSC_WRAPPERS_MAIN();
65
Note: See TracBrowser for help on using the repository browser.