| // TestBase64Server.cpp : Simple XMLRPC server example. Usage: TestBase64Server serverPort | |
| // | |
| #if defined(_MSC_VER) | |
| # pragma warning(disable:4786) // identifier was truncated in debug info | |
| #endif | |
| #include <iostream> | |
| #include <fstream> | |
| #include <algorithm> | |
| #include <stdlib.h> | |
| #include "XmlRpc.h" | |
| using namespace XmlRpc; | |
| // The server | |
| XmlRpcServer s; | |
| // No arguments, result is Base64-encoded pngnow.png data. | |
| class TestBase64 : public XmlRpcServerMethod | |
| { | |
| public: | |
| TestBase64(XmlRpcServer* s) : XmlRpcServerMethod("TestBase64", s) {} | |
| void execute(XmlRpcValue& params, XmlRpcValue& result) | |
| { | |
| std::ifstream infile("pngnow.png", std::ios::binary); | |
| if (infile.fail()) | |
| infile.open("../pngnow.png", std::ios::binary); | |
| if (infile.fail()) | |
| result = "Could not open file pngnow.png"; | |
| else { | |
| XmlRpcValue::BinaryData& data = result; | |
| int n = 0; | |
| for (;; ++n) { | |
| char c = infile.get(); | |
| if (infile.eof()) break; | |
| data.push_back(c); | |
| } | |
| std::cerr << "Read " << n << " bytes from pngnow.png\n"; | |
| } | |
| } | |
| } TestBase64(&s); // This constructor registers the method with the server | |
| int main(int argc, char* argv[]) | |
| { | |
| if (argc != 2) { | |
| std::cerr << "Usage: TestBase64Server serverPort\n"; | |
| return -1; | |
| } | |
| int port = atoi(argv[1]); | |
| //XmlRpc::setVerbosity(5); | |
| // Create the server socket on the specified port | |
| s.bindAndListen(port); | |
| // Wait for requests indefinitely | |
| s.work(-1.0); | |
| return 0; | |
| } | |