RPC mbed Server (basierend auf HTTP Protokoll) mit UI via Browser
Dependencies: EthernetInterface mbed-rpc mbed-rtos mbed
Fork of HTTP-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; } }