EthernetNetIf Compatibility.

Dependents:   XBeeWiFi_SPI_example

Fork of NetServicesSource by Donatien Garnier

Committer:
donatien
Date:
Mon Jun 14 10:33:54 2010 +0000
Revision:
1:abb442332fa8
Parent:
0:632c9925f013

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 0:632c9925f013 1
donatien 0:632c9925f013 2 /*
donatien 0:632c9925f013 3 Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
donatien 0:632c9925f013 4
donatien 0:632c9925f013 5 Permission is hereby granted, free of charge, to any person obtaining a copy
donatien 0:632c9925f013 6 of this software and associated documentation files (the "Software"), to deal
donatien 0:632c9925f013 7 in the Software without restriction, including without limitation the rights
donatien 0:632c9925f013 8 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
donatien 0:632c9925f013 9 copies of the Software, and to permit persons to whom the Software is
donatien 0:632c9925f013 10 furnished to do so, subject to the following conditions:
donatien 0:632c9925f013 11
donatien 0:632c9925f013 12 The above copyright notice and this permission notice shall be included in
donatien 0:632c9925f013 13 all copies or substantial portions of the Software.
donatien 0:632c9925f013 14
donatien 0:632c9925f013 15 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
donatien 0:632c9925f013 16 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
donatien 0:632c9925f013 17 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
donatien 0:632c9925f013 18 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
donatien 0:632c9925f013 19 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
donatien 0:632c9925f013 20 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
donatien 0:632c9925f013 21 THE SOFTWARE.
donatien 0:632c9925f013 22 */
donatien 0:632c9925f013 23
donatien 0:632c9925f013 24 #include "RPCHandler.h"
donatien 0:632c9925f013 25 #include "rpc.h"
donatien 0:632c9925f013 26
donatien 0:632c9925f013 27 //#define __DEBUG
donatien 0:632c9925f013 28 #include "dbg/dbg.h"
donatien 0:632c9925f013 29
donatien 0:632c9925f013 30 #define RPC_DATA_LEN 128
donatien 0:632c9925f013 31
donatien 0:632c9925f013 32 RPCHandler::RPCHandler(const char* rootPath, const char* path, TCPSocket* pTCPSocket) : HTTPRequestHandler(rootPath, path, pTCPSocket)
donatien 0:632c9925f013 33 {}
donatien 0:632c9925f013 34
donatien 0:632c9925f013 35 RPCHandler::~RPCHandler()
donatien 0:632c9925f013 36 {
donatien 0:632c9925f013 37 DBG("\r\nHandler destroyed\r\n");
donatien 0:632c9925f013 38 }
donatien 0:632c9925f013 39
donatien 0:632c9925f013 40 void RPCHandler::doGet()
donatien 0:632c9925f013 41 {
donatien 0:632c9925f013 42 DBG("\r\nIn RPCHandler::doGet()\r\n");
donatien 0:632c9925f013 43 char resp[RPC_DATA_LEN] = {0};
donatien 0:632c9925f013 44 char req[RPC_DATA_LEN] = {0};
donatien 0:632c9925f013 45
donatien 0:632c9925f013 46 DBG("\r\nPath : %s\r\n", path().c_str());
donatien 0:632c9925f013 47 DBG("\r\nRoot Path : %s\r\n", rootPath().c_str());
donatien 0:632c9925f013 48
donatien 0:632c9925f013 49 //Remove path
donatien 1:abb442332fa8 50 strncpy(req, path().c_str(), RPC_DATA_LEN-1);
donatien 0:632c9925f013 51 DBG("\r\nRPC req : %s\r\n", req);
donatien 0:632c9925f013 52
donatien 0:632c9925f013 53 //Remove %20, +, from req
donatien 0:632c9925f013 54 cleanReq(req);
donatien 0:632c9925f013 55 DBG("\r\nRPC req : %s\r\n", req);
donatien 0:632c9925f013 56
donatien 0:632c9925f013 57 //Do RPC Call
donatien 0:632c9925f013 58 mbed::rpc(req, resp); //FIXME: Use bool result
donatien 0:632c9925f013 59
donatien 0:632c9925f013 60 //Response
donatien 0:632c9925f013 61 setContentLen( strlen(resp) );
donatien 0:632c9925f013 62
donatien 0:632c9925f013 63 //Make sure that the browser won't cache this request
donatien 0:632c9925f013 64 respHeaders()["Cache-control"]="no-cache;no-store";
donatien 0:632c9925f013 65 // respHeaders()["Cache-control"]="no-store";
donatien 0:632c9925f013 66 respHeaders()["Pragma"]="no-cache";
donatien 0:632c9925f013 67 respHeaders()["Expires"]="0";
donatien 0:632c9925f013 68
donatien 0:632c9925f013 69 //Write data
donatien 0:632c9925f013 70 respHeaders()["Connection"] = "close";
donatien 0:632c9925f013 71 writeData(resp, strlen(resp));
donatien 0:632c9925f013 72 DBG("\r\nExit RPCHandler::doGet()\r\n");
donatien 0:632c9925f013 73 }
donatien 0:632c9925f013 74
donatien 0:632c9925f013 75 void RPCHandler::doPost()
donatien 0:632c9925f013 76 {
donatien 0:632c9925f013 77
donatien 0:632c9925f013 78 }
donatien 0:632c9925f013 79
donatien 0:632c9925f013 80 void RPCHandler::doHead()
donatien 0:632c9925f013 81 {
donatien 0:632c9925f013 82
donatien 0:632c9925f013 83 }
donatien 0:632c9925f013 84
donatien 0:632c9925f013 85
donatien 0:632c9925f013 86 void RPCHandler::onReadable() //Data has been read
donatien 0:632c9925f013 87 {
donatien 0:632c9925f013 88
donatien 0:632c9925f013 89 }
donatien 0:632c9925f013 90
donatien 0:632c9925f013 91 void RPCHandler::onWriteable() //Data has been written & buf is free
donatien 0:632c9925f013 92 {
donatien 0:632c9925f013 93 DBG("\r\nRPCHandler::onWriteable() event\r\n");
donatien 0:632c9925f013 94 close(); //Data written, we can close the connection
donatien 0:632c9925f013 95 }
donatien 0:632c9925f013 96
donatien 0:632c9925f013 97 void RPCHandler::onClose() //Connection is closing
donatien 0:632c9925f013 98 {
donatien 0:632c9925f013 99 //Nothing to do
donatien 0:632c9925f013 100 }
donatien 0:632c9925f013 101
donatien 0:632c9925f013 102 void RPCHandler::cleanReq(char* data)
donatien 0:632c9925f013 103 {
donatien 0:632c9925f013 104 char* p;
donatien 0:632c9925f013 105 static const char* lGarbage[2] = {"%20", "+"};
donatien 0:632c9925f013 106 for(int i = 0; i < 2; i++)
donatien 0:632c9925f013 107 {
donatien 0:632c9925f013 108 while( p = strstr(data, lGarbage[i]) )
donatien 0:632c9925f013 109 {
donatien 0:632c9925f013 110 memset((void*) p, ' ', strlen(lGarbage[i]));
donatien 0:632c9925f013 111 }
donatien 0:632c9925f013 112 }
donatien 0:632c9925f013 113 }
donatien 0:632c9925f013 114
donatien 0:632c9925f013 115