This is Webservice SDK for mbed. LPCXpresso1769/LPC1768/FRDM-K64F/LPC4088

Fork of libMiMic by Ryo Iizuka

Committer:
furutani
Date:
Fri Feb 24 04:43:41 2017 +0000
Revision:
115:fa79286d8ea4
Parent:
85:416f8bbbdf54
Delete missing include line.; Add parameter "timeout" to TCPSocket::connect(), precv().; Fix to send ARP request to default gateway when connecting to IP address of different segment.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nyatla 72:c118a7aa37a3 1 #include "NyLPC_net.h"
nyatla 72:c118a7aa37a3 2 #include "ModBaseClass.h"
nyatla 72:c118a7aa37a3 3 #include "HttpdConnection.h"
nyatla 72:c118a7aa37a3 4 #include "Httpd.h"
nyatla 72:c118a7aa37a3 5 #include "Net.h"
nyatla 85:416f8bbbdf54 6
nyatla 72:c118a7aa37a3 7
nyatla 72:c118a7aa37a3 8 namespace MiMic
nyatla 72:c118a7aa37a3 9 {
nyatla 72:c118a7aa37a3 10 class HttpdConnection;
nyatla 72:c118a7aa37a3 11
nyatla 72:c118a7aa37a3 12 /**
nyatla 72:c118a7aa37a3 13 * This class is Websocket module.
nyatla 72:c118a7aa37a3 14 * The class provides 3 services.
nyatla 72:c118a7aa37a3 15 * <ul>
nyatla 72:c118a7aa37a3 16 * <li>d.xml - a device description.</li>
nyatla 72:c118a7aa37a3 17 * <li>control/xx - soap handler</li>
nyatla 72:c118a7aa37a3 18 * <li>event/xx -event handler.</li>
nyatla 72:c118a7aa37a3 19 * </ul>
nyatla 72:c118a7aa37a3 20 */
nyatla 72:c118a7aa37a3 21 class ModJsonRpc:ModBaseClass
nyatla 72:c118a7aa37a3 22 {
nyatla 76:b375b3d750d8 23 public:
nyatla 85:416f8bbbdf54 24 typedef struct TcJsonRpcEx{
nyatla 85:416f8bbbdf54 25 NyLPC_TcModJsonRpc_t super;
nyatla 85:416f8bbbdf54 26 ModJsonRpc* cppmod_ptr;
nyatla 85:416f8bbbdf54 27 }TcJsonRpcEx_t;
nyatla 85:416f8bbbdf54 28 public:
nyatla 76:b375b3d750d8 29 class BasicRpcObject
nyatla 76:b375b3d750d8 30 {
nyatla 76:b375b3d750d8 31 public:
nyatla 76:b375b3d750d8 32 void* obj;
nyatla 76:b375b3d750d8 33 BasicRpcObject(void* i_ptr) : obj(i_ptr){};
nyatla 76:b375b3d750d8 34 virtual ~BasicRpcObject(){}
nyatla 76:b375b3d750d8 35 };
nyatla 76:b375b3d750d8 36 template< class T > class RpcObject : public BasicRpcObject{
nyatla 76:b375b3d750d8 37 public:
nyatla 76:b375b3d750d8 38 RpcObject(T* i_ptr) : BasicRpcObject(i_ptr){};
nyatla 76:b375b3d750d8 39 virtual ~RpcObject(){delete (static_cast<T*>(this->obj));}
nyatla 76:b375b3d750d8 40 };
nyatla 76:b375b3d750d8 41 template< class T > class RpcArray : public BasicRpcObject{
nyatla 76:b375b3d750d8 42 public:
nyatla 76:b375b3d750d8 43 RpcArray(T* i_ptr) : BasicRpcObject(i_ptr){};
nyatla 76:b375b3d750d8 44 virtual ~RpcArray(){delete[] (static_cast<T*>(this->obj));}
nyatla 76:b375b3d750d8 45 };
nyatla 72:c118a7aa37a3 46 private:
nyatla 72:c118a7aa37a3 47 public:
nyatla 72:c118a7aa37a3 48 const static int PARSE_ERROR=NyLPC_TJsonRpcErrorCode_PARSE_ERROR;
nyatla 72:c118a7aa37a3 49 const static int INVALID_REQUEST=NyLPC_TJsonRpcErrorCode_INVALID_REQUEST;
nyatla 72:c118a7aa37a3 50 const static int METHOD_NOT_FOUND=NyLPC_TJsonRpcErrorCode_METHOD_NOT_FOUND;
nyatla 72:c118a7aa37a3 51 const static int INVALID_PARAMS=NyLPC_TJsonRpcErrorCode_INVALID_PARAMS;
nyatla 72:c118a7aa37a3 52 const static int INTERNAL_ERROR=NyLPC_TJsonRpcErrorCode_INTERNAL_ERROR;
nyatla 72:c118a7aa37a3 53 const static int SERVER_ERROR_BASE=NyLPC_TJsonRpcErrorCode_SERVER_ERROR_BASE;
nyatla 72:c118a7aa37a3 54 private:
nyatla 76:b375b3d750d8 55 BasicRpcObject** _objects;
nyatla 72:c118a7aa37a3 56 const struct NyLPC_TJsonRpcClassDef** _rpc_table;
nyatla 72:c118a7aa37a3 57 protected:
nyatla 85:416f8bbbdf54 58 TcJsonRpcEx_t* _mod;
nyatla 72:c118a7aa37a3 59 public:
nyatla 72:c118a7aa37a3 60 ModJsonRpc();
nyatla 72:c118a7aa37a3 61 /**
nyatla 72:c118a7aa37a3 62 * @param i_rpc_table
nyatla 72:c118a7aa37a3 63 * An address of Json RPC functions table.
nyatla 72:c118a7aa37a3 64 */
nyatla 72:c118a7aa37a3 65 ModJsonRpc(const char* i_path,const struct NyLPC_TJsonRpcClassDef** i_rpc_table);
nyatla 72:c118a7aa37a3 66 virtual ~ModJsonRpc();
nyatla 81:e5e4f2264d24 67 bool isStarted();
nyatla 72:c118a7aa37a3 68 void setParam(const char* i_path,const struct NyLPC_TJsonRpcClassDef** i_rpc_table);
nyatla 72:c118a7aa37a3 69 /**
nyatla 72:c118a7aa37a3 70 * This function prepares Json rpc loop with websocket negotiation.
nyatla 72:c118a7aa37a3 71 * @return
nyatla 72:c118a7aa37a3 72 * true if successful;otherwishe false.
nyatla 72:c118a7aa37a3 73 */
nyatla 72:c118a7aa37a3 74 bool execute(HttpdConnection& i_connection);
nyatla 75:2a18df0ef111 75 void dispatchRpc();
nyatla 72:c118a7aa37a3 76
nyatla 72:c118a7aa37a3 77 public:
nyatla 72:c118a7aa37a3 78 //for development
nyatla 76:b375b3d750d8 79 int addObject(BasicRpcObject* i_object);
nyatla 85:416f8bbbdf54 80 bool removeObject(int i_id);
nyatla 85:416f8bbbdf54 81
nyatla 85:416f8bbbdf54 82 void* getObject(int i_oid);
nyatla 85:416f8bbbdf54 83 bool putResult(unsigned int i_id);
nyatla 72:c118a7aa37a3 84 bool putResult(unsigned int i_id,const char* i_params_fmt,...);
nyatla 72:c118a7aa37a3 85 bool putError(unsigned int i_id,int i_code);
nyatla 72:c118a7aa37a3 86 };
nyatla 76:b375b3d750d8 87 }