Jun Furutani / libMiMic

Fork of libMiMic by Ryo Iizuka

Committer:
nyatla
Date:
Tue Jun 24 14:34:39 2014 +0000
Revision:
81:e5e4f2264d24
Parent:
73:8c7dd6fd462e
???????????????JsonRPC??????????; LPC4088/LPC1768??????????;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nyatla 58:03b89038b21a 1 #include "ModWebSocket.h"
nyatla 58:03b89038b21a 2 #include "../net/httpd/mod/NyLPC_cModWebSocket_protected.h"
nyatla 58:03b89038b21a 3 #include "HttpdConnection.h"
nyatla 58:03b89038b21a 4
nyatla 58:03b89038b21a 5 namespace MiMic
nyatla 58:03b89038b21a 6 {
nyatla 58:03b89038b21a 7 ModWebSocket::ModWebSocket(const char* i_path):ModBaseClass(i_path)
nyatla 58:03b89038b21a 8 {
nyatla 58:03b89038b21a 9 this->_mod=NULL;
nyatla 58:03b89038b21a 10 }
nyatla 58:03b89038b21a 11 ModWebSocket::ModWebSocket()
nyatla 58:03b89038b21a 12 {
nyatla 58:03b89038b21a 13 this->_mod=NULL;
nyatla 58:03b89038b21a 14 }
nyatla 58:03b89038b21a 15 ModWebSocket::~ModWebSocket()
nyatla 58:03b89038b21a 16 {
nyatla 58:03b89038b21a 17 if(this->_mod!=NULL){
nyatla 58:03b89038b21a 18 NyLPC_cModWebSocket_finalize(this->_mod);
nyatla 73:8c7dd6fd462e 19 free(this->_mod);
nyatla 58:03b89038b21a 20 this->_mod=NULL;
nyatla 58:03b89038b21a 21 }
nyatla 58:03b89038b21a 22 }
nyatla 81:e5e4f2264d24 23 bool ModWebSocket::isStarted(){
nyatla 81:e5e4f2264d24 24 return this->_mod!=NULL;
nyatla 81:e5e4f2264d24 25 }
nyatla 81:e5e4f2264d24 26
nyatla 58:03b89038b21a 27 void ModWebSocket::setParam(const char* i_path)
nyatla 58:03b89038b21a 28 {
nyatla 58:03b89038b21a 29 ModBaseClass::setParam(i_path);
nyatla 58:03b89038b21a 30 }
nyatla 58:03b89038b21a 31
nyatla 58:03b89038b21a 32 bool ModWebSocket::execute(HttpdConnection& i_connection)
nyatla 58:03b89038b21a 33 {
nyatla 81:e5e4f2264d24 34 i_connection.lockHttpd();
nyatla 58:03b89038b21a 35 if(this->_mod!=NULL){
nyatla 81:e5e4f2264d24 36 i_connection.unlockHttpd();
nyatla 58:03b89038b21a 37 return false;
nyatla 58:03b89038b21a 38 }
nyatla 58:03b89038b21a 39 this->_mod=(NyLPC_TcModWebSocket_t*)malloc(sizeof(NyLPC_TcModWebSocket_t));
nyatla 81:e5e4f2264d24 40 i_connection.unlockHttpd();
nyatla 81:e5e4f2264d24 41
nyatla 58:03b89038b21a 42 if(this->_mod==NULL){
nyatla 58:03b89038b21a 43 return false;
nyatla 58:03b89038b21a 44 }
nyatla 58:03b89038b21a 45 //initialize websocket
nyatla 58:03b89038b21a 46 NyLPC_cModWebSocket_initialize(this->_mod,this->_path);
nyatla 58:03b89038b21a 47 if(NyLPC_cModWebSocket_canHandle(this->_mod,i_connection._ref_inst)){
nyatla 73:8c7dd6fd462e 48 if(NyLPC_cModWebSocket_execute(this->_mod,i_connection._ref_inst)){
nyatla 73:8c7dd6fd462e 49 return true;
nyatla 73:8c7dd6fd462e 50 }
nyatla 58:03b89038b21a 51 }
nyatla 58:03b89038b21a 52 NyLPC_cModWebSocket_finalize(this->_mod);
nyatla 58:03b89038b21a 53 free(this->_mod);
nyatla 81:e5e4f2264d24 54 i_connection.lockHttpd();
nyatla 58:03b89038b21a 55 this->_mod=NULL;
nyatla 81:e5e4f2264d24 56 i_connection.unlockHttpd();
nyatla 73:8c7dd6fd462e 57 return false;
nyatla 58:03b89038b21a 58 }
nyatla 58:03b89038b21a 59 bool ModWebSocket::write(const void* i_tx_buf,int i_tx_size)
nyatla 58:03b89038b21a 60 {
nyatla 58:03b89038b21a 61 if(this->_mod==NULL){
nyatla 58:03b89038b21a 62 return false;
nyatla 58:03b89038b21a 63 }
nyatla 58:03b89038b21a 64 return NyLPC_cModWebSocket_write(this->_mod,i_tx_buf,i_tx_size)?true:false;
nyatla 58:03b89038b21a 65 }
nyatla 58:03b89038b21a 66
nyatla 72:c118a7aa37a3 67
nyatla 58:03b89038b21a 68
nyatla 72:c118a7aa37a3 69 bool ModWebSocket::writeFormat(const char* i_fmt,...)
nyatla 58:03b89038b21a 70 {
nyatla 72:c118a7aa37a3 71 bool ret;
nyatla 58:03b89038b21a 72 va_list a;
nyatla 58:03b89038b21a 73 //ストリームの状態を更新する。
nyatla 58:03b89038b21a 74 va_start(a,i_fmt);
nyatla 72:c118a7aa37a3 75 ret=NyLPC_cModWebSocket_writeFormatV(this->_mod,i_fmt,a)?true:false;
nyatla 58:03b89038b21a 76 va_end(a);
nyatla 72:c118a7aa37a3 77 return ret;
nyatla 58:03b89038b21a 78 }
nyatla 58:03b89038b21a 79
nyatla 58:03b89038b21a 80 int ModWebSocket::read(void* i_rx_buf,int i_rx_size)
nyatla 58:03b89038b21a 81 {
nyatla 58:03b89038b21a 82 if(this->_mod==NULL){
nyatla 58:03b89038b21a 83 return false;
nyatla 58:03b89038b21a 84 }
nyatla 58:03b89038b21a 85 //write here!
nyatla 58:03b89038b21a 86 return NyLPC_cModWebSocket_read(this->_mod,i_rx_buf,i_rx_size);
nyatla 58:03b89038b21a 87 }
nyatla 58:03b89038b21a 88 bool ModWebSocket::canRead()
nyatla 58:03b89038b21a 89 {
nyatla 81:e5e4f2264d24 90 if(this->_mod==NULL){
nyatla 81:e5e4f2264d24 91 return false;
nyatla 81:e5e4f2264d24 92 }
nyatla 58:03b89038b21a 93 return NyLPC_cModWebSocket_canRead(this->_mod)?true:false;
nyatla 58:03b89038b21a 94 }
nyatla 58:03b89038b21a 95
nyatla 58:03b89038b21a 96 void ModWebSocket::close()
nyatla 58:03b89038b21a 97 {
nyatla 58:03b89038b21a 98 if(this->_mod==NULL){
nyatla 58:03b89038b21a 99 return;
nyatla 58:03b89038b21a 100 }
nyatla 58:03b89038b21a 101 NyLPC_cModWebSocket_finalize(this->_mod);
nyatla 73:8c7dd6fd462e 102 free(this->_mod);
nyatla 58:03b89038b21a 103 this->_mod=NULL;
nyatla 58:03b89038b21a 104 return;
nyatla 58:03b89038b21a 105 }
nyatla 58:03b89038b21a 106 }