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.
Dependencies: EthernetInterface mbed-rpc mbed-rtos mbed
Fork of IoTKit_RPC-Server by
RequestHandler.cpp
- Committer:
- feb11
- Date:
- 2013-07-17
- Revision:
- 7:838d7ea07e18
- Parent:
- 0:9e4bcb10b3e3
File content as of revision 7:838d7ea07e18:
#include "RequestHandler.h"
#include "mbed_rpc.h"
#include "RPCObjectManager.h"
#include "RPCCommand.h"
const char* INVALID_CMD = "Invalid RPC command";
const char* DELETE_ERROR = "You must send a DELETE request to remove an object ";
const char* CREATE_ERROR = "You must send a PUT request to create an object";
const char* FUNC_CALL_ERROR = "You must send a GET request to call a function";
void GetRequestHandler::handle(const RPCCommand& cmd, char *reply)
{
switch(cmd.get_type())
{
case DELETE:
printf("Error: %s\n", DELETE_ERROR);
strcat(reply, DELETE_ERROR);
break;
case FUNCTION_CALL:
RPC::call(cmd.get_cmd(), reply);
break;
case CREATE:
printf("Error: %s\n", CREATE_ERROR);
strcat(reply, CREATE_ERROR);
break;
default:
printf("Error: %s\n", INVALID_CMD);
strcat(reply, INVALID_CMD);
break;
}
}
void PutRequestHandler::handle(const RPCCommand& cmd, char *reply)
{
switch(cmd.get_type())
{
case DELETE:
printf("Error: %s\n", DELETE_ERROR);
strcat(reply, DELETE_ERROR);
break;
case FUNCTION_CALL:
printf("Error: %s\n", FUNC_CALL_ERROR);
strcat(reply, FUNC_CALL_ERROR);
break;
case CREATE:
RPC::call(cmd.get_cmd(), reply);
if(strlen(reply) > 0)
{
RPCObjectManager::instance().store_object(reply);
strcat(reply, " has been created");
}
else
{
printf("Error while creating object\n");
strcat(reply, "Error while creating object.");
}
break;
default:
printf("Error: %s\n", INVALID_CMD);
strcat(reply, INVALID_CMD);
break;
}
}
void DeleteRequestHandler::handle(const RPCCommand& cmd, char *reply)
{
switch(cmd.get_type())
{
case CREATE:
printf("Error: %s\n", CREATE_ERROR);
strcat(reply, CREATE_ERROR);
break;
case FUNCTION_CALL:
printf("Error: %s\n", FUNC_CALL_ERROR);
strcat(reply, FUNC_CALL_ERROR);
break;
case DELETE:
RPC::call(cmd.get_cmd(), reply);
RPCObjectManager::instance().remove_object(cmd.get_obj_name());
strcat(reply, "Deleted object ");
strcat(reply, cmd.get_obj_name());
break;
default:
printf("Error: %s\n", INVALID_CMD);
strcat(reply, INVALID_CMD);
break;
}
}
void ComplexRequestHandler::handle(const RPCCommand& cmd, char *reply)
{
switch(cmd.get_type())
{
case CREATE :
putHandler.handle(cmd, reply);
break;
case DELETE :
deleteHandler.handle(cmd, reply);
break;
case FUNCTION_CALL :
getHandler.handle(cmd, reply);
break;
default :
printf("Error: %s\n", INVALID_CMD);
strcat(reply, INVALID_CMD);
break;
}
}
