Dirk-Willem van Gulik (NXP/mbed)
/
AmpereMeter
Example self-announcing webserver which controls a servo through a smallHTML userinterface.
Diff: RestMeterHandler.cpp
- Revision:
- 0:a259777c45a3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/RestMeterHandler.cpp Sat Aug 14 15:56:01 2010 +0000 @@ -0,0 +1,53 @@ +#include "RestMeterHandler.h" + +RestMeterHandler::RestMeterHandler(const char* rootPath, const char* path, TCPSocket* pTCPSocket) : HTTPRequestHandler(rootPath, path, pTCPSocket) { +} + +RestMeterHandler::~RestMeterHandler() { +} + +const char *(*RestMeterHandler::callback)(const char*) = NULL; + +void RestMeterHandler::attach(const char *(*cb)(const char * command)) { + callback = cb; +} + +void RestMeterHandler::doGet() { + const char * p = path().c_str(); + const char * q = strstr(p,"cmd="); + + if (q && q[4]) + { + q+=4; + } else { + q = "none"; + }; + + const char * resp = "No callback"; + + printf("Calling back with %s, cb=%p\n\r", q,callback); + + if (callback) + resp = (*callback)(q); + + setContentLen( strlen(resp) ); + respHeaders()["Connection"] = "close"; + writeData(resp, strlen(resp)); +} + +void RestMeterHandler::doPost() { +} + +void RestMeterHandler::doHead() { +} + +void RestMeterHandler::onReadable() { //Data has been read +} + +void RestMeterHandler::onWriteable() { //Data has been written & buf is free + close(); //Data written, we can close the connection +} + +void RestMeterHandler::onClose() { //Connection is closing + //Nothing to do +}