Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of libMiMic by
ModFileIo.cpp
00001 #include <ModFileIo.h> 00002 #include <stdio.h> 00003 #include "mbed.h" 00004 using namespace MiMic; 00005 /* 00006 * FileIO class 00007 */ 00008 typedef struct TcModFileIoDumy 00009 { 00010 NyLPC_TcModFileIoBaseClass_t super; 00011 }TcFileIoDumy_t; 00012 00013 const static char* STR_TEXT_HTML="text/html"; 00014 #define SIZE_OF_FBUF 256 00015 00016 00017 00018 static NyLPC_TBool upload_handler(NyLPC_TcHttpdConnection_t* i_connection,const NyLPC_TChar* i_fname,NyLPC_TcHttpBodyParser_t* i_body_parser) 00019 { 00020 char* buf=Httpd::_shared_buf;// This handler called with lock! 00021 00022 //save to new file 00023 FILE *fp; 00024 fp = fopen(i_fname, "w"); 00025 if(fp==NULL){ 00026 NyLPC_cHttpdUtils_sendErrorResponse(i_connection,500); 00027 return NyLPC_TBool_FALSE; 00028 } 00029 NyLPC_TInt16 l; 00030 if(NyLPC_cHttpBodyParser_parseStream(i_body_parser,NyLPC_cHttpdConnection_refStream(i_connection),buf,SIZE_OF_FBUF,&l)){ 00031 while(l>0){ 00032 fwrite(buf,1,l,fp); 00033 if(!NyLPC_cHttpBodyParser_parseStream(i_body_parser,NyLPC_cHttpdConnection_refStream(i_connection),buf,SIZE_OF_FBUF,&l)){ 00034 NyLPC_OnErrorGoto(Error_FILE); 00035 } 00036 } 00037 } 00038 fclose(fp); 00039 //write response 00040 NyLPC_cHttpdConnection_sendResponseHeader2(i_connection,200,STR_TEXT_HTML,0,NULL); 00041 return NyLPC_TBool_TRUE; 00042 Error_FILE: 00043 fclose(fp); 00044 NyLPC_cHttpdUtils_sendErrorResponse(i_connection,500); 00045 return NyLPC_TBool_FALSE; 00046 } 00047 00048 static NyLPC_TBool create_handler(NyLPC_TcHttpdConnection_t* i_connection,const NyLPC_TChar* i_fname) 00049 { 00050 FILE *fp; 00051 fp = fopen(i_fname, "w"); 00052 if(fp!=NULL){ 00053 fclose(fp); 00054 NyLPC_cHttpdConnection_sendResponseHeader2(i_connection,200,STR_TEXT_HTML,0,NULL); 00055 return NyLPC_TBool_TRUE; 00056 } 00057 NyLPC_cHttpdUtils_sendErrorResponse(i_connection,500); 00058 return NyLPC_TBool_FALSE; 00059 } 00060 00061 static NyLPC_TBool remove_handler(NyLPC_TcHttpdConnection_t* i_connection,const NyLPC_TChar* i_fname) 00062 { 00063 if(remove(i_fname)==0){ 00064 NyLPC_cHttpdConnection_sendResponseHeader2(i_connection,200,STR_TEXT_HTML,0,NULL); 00065 return NyLPC_TBool_TRUE; 00066 } 00067 //500ERROR 00068 NyLPC_cHttpdUtils_sendErrorResponse(i_connection,500); 00069 return NyLPC_TBool_FALSE; 00070 } 00071 00072 00073 00074 static void cModFileIoDumy_initialize(TcFileIoDumy_t* i_inst,const char* i_root_path) 00075 { 00076 NyLPC_cModFileIoBaseClass_initialize(&(i_inst->super),i_root_path); 00077 i_inst->super._abstruct_function.upload=upload_handler; 00078 i_inst->super._abstruct_function.create=create_handler; 00079 i_inst->super._abstruct_function.remove=remove_handler; 00080 } 00081 #define cModFileIoDumy_finalize(i_inst) NyLPC_cModFileIoBaseClass_finalize(&(i_inst)->super) 00082 #define cModFileIoDumy_canHandle(i_inst,i_connection) NyLPC_cModFileIoBaseClass_canHandle(&(i_inst)->super,i_connection) 00083 #define cModFileIoDumy_execute(i_inst,i_connection) NyLPC_cModFileIoBaseClass_execute(&(i_inst)->super,i_connection) 00084 00085 00086 00087 00088 00089 00090 00091 namespace MiMic 00092 { 00093 00094 00095 ModFileIo::ModFileIo(const char* i_path):ModBaseClass(i_path) 00096 { 00097 } 00098 ModFileIo::ModFileIo() 00099 { 00100 } 00101 ModFileIo::~ModFileIo() 00102 { 00103 } 00104 void ModFileIo::setParam(const char* i_path) 00105 { 00106 ModBaseClass::setParam(i_path); 00107 } 00108 bool ModFileIo::execute(HttpdConnection& i_connection) 00109 { 00110 //check parametor 00111 if(this->_path==NULL){ 00112 return false; 00113 } 00114 TcModFileIoDumy mod; 00115 cModFileIoDumy_initialize(&mod,this->_path); 00116 if(cModFileIoDumy_canHandle(&mod,i_connection._ref_inst)){ 00117 cModFileIoDumy_execute(&mod,i_connection._ref_inst); 00118 cModFileIoDumy_finalize(&mod); 00119 return true; 00120 } 00121 cModFileIoDumy_finalize(&mod); 00122 return false; 00123 } 00124 00125 00126 00127 00128 }
Generated on Tue Jul 12 2022 16:22:56 by
