📄 consolemain.cpp
字号:
/** Console Application to test the dynamic SOAP server dlls in a simple commandline environment. * @file ConsoleMain.cpp It tests the same SOAP server shared libraries that can be later deployed in the Apache server. to test it do the following: Start this program, open a commandline prompt window, change to the build output directory and enter. */#include <unistd.h>#include <signal.h>#include <iostream>#include <cassert>#include <ltdl.h>#include <stdio.h>#include <memory.h>#include "stdsoap2.h"#include "apache_gsoap.h"/** the parameter passed to the dll for constructing a server. */static const char szQueryParameter[] = "HelloWorld";/** Run a single threaded loop to accept client requests. */void main(const int /*argc*/, const char *argv[]) { char szSearchPath[1024]; struct soap soap; int nRet = SOAP_OK; struct apache_soap_interface Intf; memset(&Intf, 0, sizeof Intf); memset(szSearchPath, 0, sizeof szSearchPath); getcwd(szSearchPath, sizeof szSearchPath); strcat(szSearchPath, "/../example/calculator"); cout << "path is: '"<< szSearchPath << "'"<< endl; static const char szLibraryName[] = "libCalculator"; int nOK = lt_dlinit(); if (0 != nOK) { cerr << "failed to lt_dlinit()" << endl; exit(1); } //set the path where the library can be found: nOK = lt_dladdsearchdir(szSearchPath); if (0 != nOK) { cerr << "failed to set search path for loading library" << endl; } cout << "The the search directory for shared libraries is: '" << lt_dlgetsearchpath() << "'" << endl; lt_dlhandle soaplib = NULL; void *pfun = NULL; // our entry point if (0 == nOK) { soaplib = lt_dlopenext(szLibraryName); if (NULL == soaplib) { cerr << "failed to open " << szSearchPath << ", lib " << szLibraryName << " last error: " << lt_dlerror() << endl; nOK = 1; } else { cout << "the library " << szLibraryName << " was loaded" << endl; } } if (0 == nOK) { pfun = (void *)lt_dlsym(soaplib, APACHE_HTTPSERVER_ENTRY_POINT); if (NULL == pfun) { cout << "entry point " << APACHE_HTTPSERVER_ENTRY_POINT << " not found" << endl; nOK = 1; } else { cout << "entry point " << APACHE_HTTPSERVER_ENTRY_POINT << " found" << endl; } } if (0 == nOK) { apache_init_soap_interface_fn pfn = (apache_init_soap_interface_fn)(pfun); (*pfn)(&Intf); if (NULL != Intf.fsoap_init) { (*Intf.fsoap_init)(&soap); if (NULL != Intf.fsoap_serve) { int nRet = (*Intf.fsoap_serve)(&soap); } //TODO: call cleanup functions. } } if (NULL != soaplib) { int nClose = lt_dlclose(soaplib); if (0 != nClose) { cerr << "failed to unload the soap server" << endl; } } lt_dlexit();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -