Team E1
Fork of HTTPServer by
Handler/RpcHandler.cpp
- Committer:
- leihen
- Date:
- 2013-06-01
- Revision:
- 5:dc88012caef1
- Child:
- 9:c2a1462b9b71
File content as of revision 5:dc88012caef1:
/* FsHandler.cpp */ #include "mbed.h" #include "RpcHandler.h" #include "mbed_rpc.h" #define _DEBUG 1 #if (_DEBUG && !defined(TARGET_LPC11U24)) #define INFO(x, ...) std::printf("[HTTPRpcHandler : DBG]"x"\r\n", ##__VA_ARGS__); #define WARN(x, ...) std::printf("[HTTPRpcHandler : DBG]"x"\r\n", ##__VA_ARGS__); #define ERR(x, ...) std::printf("[HTTPRpcHandler : DBG]"x"\r\n", ##__VA_ARGS__); #else #define INFO(x, ...) #define WARN(x, ...) #define ERR(x, ...) #endif RPC rpc("rpc"); HTTPRpcRequestHandler::HTTPRpcRequestHandler(const char* rootPath, const char* localPath, HTTPConnection::HTTPMessage& Msg, TCPSocketConnection& Tcp) : HTTPRequestHandler(Msg, Tcp) { m_rootPath = rootPath; m_localPath = localPath; handleRequest(); } HTTPRpcRequestHandler::~HTTPRpcRequestHandler() { } int HTTPRpcRequestHandler::handleGetRequest() { char outBuf[256] = {}; bool retval = false; int err = 404; string rpc_args(""); INFO("Handling RPC Get Requesst."); // This version of the RPC handler does only accept native RPC commands in the format // /<class>/<method> <argument1> [<argument2> [<argument3> ...]] // So we can simply pass our local pathg to our rpc // Append missing slash if needed if (m_localPath.c_str()[0] != '/') { rpc_args = "/"; } // replace the HTTP strings with ascii strings for (int i = 0 ; i < m_localPath.length() ; i++) { if (m_localPath.substr(i,3) == "%20") { rpc_args += " "; i+=2; } else { rpc_args += m_localPath.substr(i,1); } } INFO("RPC to %s", rpc_args.c_str()); retval = rpc.call(rpc_args.c_str(),outBuf); INFO("RPC Request returned %d with args : %s", retval==true ? 1 : 0, outBuf); if (retval) { // No error startResponse(retval, strlen(outBuf)); processResponse(strlen(outBuf), outBuf); endResponse(); err = 0; } return err; } int HTTPRpcRequestHandler::handlePutRequest() { return 404; } int HTTPRpcRequestHandler::handlePostRequest() { return 404; }