Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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;
}
