This is Webservice SDK for mbed. LPCXpresso1769/LPC1768/FRDM-K64F/LPC4088
Dependents: MbedFileServer_1768MiniDK2 RedWireBridge IssueDebug_gcc MiMicRemoteMCU-for-Mbed ... more
ModWebSocket.cpp
00001 #include "ModWebSocket.h" 00002 #include "../net/httpd/mod/NyLPC_cModWebSocket_protected.h" 00003 #include "HttpdConnection.h" 00004 00005 namespace MiMic 00006 { 00007 ModWebSocket::ModWebSocket(const char* i_path):ModBaseClass(i_path) 00008 { 00009 this->_mod=NULL; 00010 } 00011 ModWebSocket::ModWebSocket() 00012 { 00013 this->_mod=NULL; 00014 } 00015 ModWebSocket::~ModWebSocket() 00016 { 00017 if(this->_mod!=NULL){ 00018 NyLPC_cModWebSocket_finalize(this->_mod); 00019 free(this->_mod); 00020 this->_mod=NULL; 00021 } 00022 } 00023 bool ModWebSocket::isStarted(){ 00024 return this->_mod!=NULL; 00025 } 00026 00027 void ModWebSocket::setParam(const char* i_path) 00028 { 00029 ModBaseClass::setParam(i_path); 00030 } 00031 00032 bool ModWebSocket::execute(HttpdConnection& i_connection) 00033 { 00034 i_connection.lockHttpd(); 00035 if(this->_mod!=NULL){ 00036 i_connection.unlockHttpd(); 00037 return false; 00038 } 00039 this->_mod=(NyLPC_TcModWebSocket_t*)malloc(sizeof(NyLPC_TcModWebSocket_t)); 00040 i_connection.unlockHttpd(); 00041 00042 if(this->_mod==NULL){ 00043 return false; 00044 } 00045 //initialize websocket 00046 NyLPC_cModWebSocket_initialize(this->_mod,this->_path); 00047 if(NyLPC_cModWebSocket_canHandle(this->_mod,i_connection._ref_inst)){ 00048 if(NyLPC_cModWebSocket_execute(this->_mod,i_connection._ref_inst)){ 00049 return true; 00050 } 00051 } 00052 NyLPC_cModWebSocket_finalize(this->_mod); 00053 free(this->_mod); 00054 i_connection.lockHttpd(); 00055 this->_mod=NULL; 00056 i_connection.unlockHttpd(); 00057 return false; 00058 } 00059 bool ModWebSocket::write(const void* i_tx_buf,int i_tx_size) 00060 { 00061 if(this->_mod==NULL){ 00062 return false; 00063 } 00064 return NyLPC_cModWebSocket_write(this->_mod,i_tx_buf,i_tx_size)?true:false; 00065 } 00066 00067 00068 00069 bool ModWebSocket::writeFormat(const char* i_fmt,...) 00070 { 00071 bool ret; 00072 va_list a; 00073 //ストリームの状態を更新する。 00074 va_start(a,i_fmt); 00075 ret=NyLPC_cModWebSocket_writeFormatV(this->_mod,i_fmt,a)?true:false; 00076 va_end(a); 00077 return ret; 00078 } 00079 00080 int ModWebSocket::read(void* i_rx_buf,int i_rx_size) 00081 { 00082 if(this->_mod==NULL){ 00083 return false; 00084 } 00085 //write here! 00086 return NyLPC_cModWebSocket_read(this->_mod,i_rx_buf,i_rx_size); 00087 } 00088 bool ModWebSocket::canRead() 00089 { 00090 if(this->_mod==NULL){ 00091 return false; 00092 } 00093 return NyLPC_cModWebSocket_canRead(this->_mod)?true:false; 00094 } 00095 00096 void ModWebSocket::close() 00097 { 00098 if(this->_mod==NULL){ 00099 return; 00100 } 00101 NyLPC_cModWebSocket_finalize(this->_mod); 00102 free(this->_mod); 00103 this->_mod=NULL; 00104 return; 00105 } 00106 }
Generated on Tue Jul 12 2022 15:46:15 by 1.7.2