Jun Furutani / libMiMic

Fork of libMiMic by Ryo Iizuka

Committer:
nyatla
Date:
Sat Jun 14 02:14:20 2014 +0000
Revision:
73:8c7dd6fd462e
Parent:
72:c118a7aa37a3
Child:
81:e5e4f2264d24
ModWebsocket?ModJsonRpc?????????

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 58:03b89038b21a 23 void ModWebSocket::setParam(const char* i_path)
nyatla 58:03b89038b21a 24 {
nyatla 58:03b89038b21a 25 ModBaseClass::setParam(i_path);
nyatla 58:03b89038b21a 26 }
nyatla 58:03b89038b21a 27
nyatla 58:03b89038b21a 28 bool ModWebSocket::execute(HttpdConnection& i_connection)
nyatla 58:03b89038b21a 29 {
nyatla 58:03b89038b21a 30 if(this->_mod!=NULL){
nyatla 58:03b89038b21a 31 return false;
nyatla 58:03b89038b21a 32 }
nyatla 58:03b89038b21a 33 this->_mod=(NyLPC_TcModWebSocket_t*)malloc(sizeof(NyLPC_TcModWebSocket_t));
nyatla 58:03b89038b21a 34 if(this->_mod==NULL){
nyatla 58:03b89038b21a 35 return false;
nyatla 58:03b89038b21a 36 }
nyatla 58:03b89038b21a 37 //initialize websocket
nyatla 58:03b89038b21a 38 NyLPC_cModWebSocket_initialize(this->_mod,this->_path);
nyatla 58:03b89038b21a 39 if(NyLPC_cModWebSocket_canHandle(this->_mod,i_connection._ref_inst)){
nyatla 73:8c7dd6fd462e 40 if(NyLPC_cModWebSocket_execute(this->_mod,i_connection._ref_inst)){
nyatla 73:8c7dd6fd462e 41 return true;
nyatla 73:8c7dd6fd462e 42 }
nyatla 58:03b89038b21a 43 }
nyatla 58:03b89038b21a 44 NyLPC_cModWebSocket_finalize(this->_mod);
nyatla 58:03b89038b21a 45 free(this->_mod);
nyatla 58:03b89038b21a 46 this->_mod=NULL;
nyatla 73:8c7dd6fd462e 47 return false;
nyatla 58:03b89038b21a 48 }
nyatla 58:03b89038b21a 49 bool ModWebSocket::write(const void* i_tx_buf,int i_tx_size)
nyatla 58:03b89038b21a 50 {
nyatla 58:03b89038b21a 51 if(this->_mod==NULL){
nyatla 58:03b89038b21a 52 return false;
nyatla 58:03b89038b21a 53 }
nyatla 58:03b89038b21a 54 return NyLPC_cModWebSocket_write(this->_mod,i_tx_buf,i_tx_size)?true:false;
nyatla 58:03b89038b21a 55 }
nyatla 58:03b89038b21a 56
nyatla 72:c118a7aa37a3 57
nyatla 58:03b89038b21a 58
nyatla 72:c118a7aa37a3 59 bool ModWebSocket::writeFormat(const char* i_fmt,...)
nyatla 58:03b89038b21a 60 {
nyatla 72:c118a7aa37a3 61 bool ret;
nyatla 58:03b89038b21a 62 va_list a;
nyatla 58:03b89038b21a 63 //ストリームの状態を更新する。
nyatla 58:03b89038b21a 64 va_start(a,i_fmt);
nyatla 72:c118a7aa37a3 65 ret=NyLPC_cModWebSocket_writeFormatV(this->_mod,i_fmt,a)?true:false;
nyatla 58:03b89038b21a 66 va_end(a);
nyatla 72:c118a7aa37a3 67 return ret;
nyatla 58:03b89038b21a 68 }
nyatla 58:03b89038b21a 69
nyatla 58:03b89038b21a 70 int ModWebSocket::read(void* i_rx_buf,int i_rx_size)
nyatla 58:03b89038b21a 71 {
nyatla 58:03b89038b21a 72 if(this->_mod==NULL){
nyatla 58:03b89038b21a 73 return false;
nyatla 58:03b89038b21a 74 }
nyatla 58:03b89038b21a 75 //write here!
nyatla 58:03b89038b21a 76 return NyLPC_cModWebSocket_read(this->_mod,i_rx_buf,i_rx_size);
nyatla 58:03b89038b21a 77 }
nyatla 58:03b89038b21a 78 bool ModWebSocket::canRead()
nyatla 58:03b89038b21a 79 {
nyatla 58:03b89038b21a 80 return NyLPC_cModWebSocket_canRead(this->_mod)?true:false;
nyatla 58:03b89038b21a 81 }
nyatla 58:03b89038b21a 82
nyatla 58:03b89038b21a 83 void ModWebSocket::close()
nyatla 58:03b89038b21a 84 {
nyatla 58:03b89038b21a 85 if(this->_mod==NULL){
nyatla 58:03b89038b21a 86 return;
nyatla 58:03b89038b21a 87 }
nyatla 58:03b89038b21a 88 NyLPC_cModWebSocket_finalize(this->_mod);
nyatla 73:8c7dd6fd462e 89 free(this->_mod);
nyatla 58:03b89038b21a 90 this->_mod=NULL;
nyatla 58:03b89038b21a 91 return;
nyatla 58:03b89038b21a 92 }
nyatla 58:03b89038b21a 93 }