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
mbed/ModFileIo.cpp@42:f83aa17dcae5, 2013-07-04 (annotated)
- Committer:
- nyatla
- Date:
- Thu Jul 04 11:05:56 2013 +0000
- Revision:
- 42:f83aa17dcae5
MiMic core r271;
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| nyatla | 42:f83aa17dcae5 | 1 | #include <ModFileIo.h> | 
| nyatla | 42:f83aa17dcae5 | 2 | #include <stdio.h> | 
| nyatla | 42:f83aa17dcae5 | 3 | #include "mbed.h" | 
| nyatla | 42:f83aa17dcae5 | 4 | using namespace MiMic; | 
| nyatla | 42:f83aa17dcae5 | 5 | /* | 
| nyatla | 42:f83aa17dcae5 | 6 | * FileIO class | 
| nyatla | 42:f83aa17dcae5 | 7 | */ | 
| nyatla | 42:f83aa17dcae5 | 8 | typedef struct TcModFileIoDumy | 
| nyatla | 42:f83aa17dcae5 | 9 | { | 
| nyatla | 42:f83aa17dcae5 | 10 | NyLPC_TcModFileIoBaseClass_t super; | 
| nyatla | 42:f83aa17dcae5 | 11 | }TcFileIoDumy_t; | 
| nyatla | 42:f83aa17dcae5 | 12 | |
| nyatla | 42:f83aa17dcae5 | 13 | const static char* STR_TEXT_HTML="text/html"; | 
| nyatla | 42:f83aa17dcae5 | 14 | #define SIZE_OF_FBUF 256 | 
| nyatla | 42:f83aa17dcae5 | 15 | |
| nyatla | 42:f83aa17dcae5 | 16 | |
| nyatla | 42:f83aa17dcae5 | 17 | |
| nyatla | 42:f83aa17dcae5 | 18 | static NyLPC_TBool upload_handler(NyLPC_TcHttpdConnection_t* i_connection,const NyLPC_TChar* i_fname,NyLPC_TcHttpBodyParser_t* i_body_parser) | 
| nyatla | 42:f83aa17dcae5 | 19 | { | 
| nyatla | 42:f83aa17dcae5 | 20 | char* buf=Httpd::_shared_buf;// This handler called with lock! | 
| nyatla | 42:f83aa17dcae5 | 21 | |
| nyatla | 42:f83aa17dcae5 | 22 | //save to new file | 
| nyatla | 42:f83aa17dcae5 | 23 | FILE *fp; | 
| nyatla | 42:f83aa17dcae5 | 24 | fp = fopen(i_fname, "w"); | 
| nyatla | 42:f83aa17dcae5 | 25 | if(fp==NULL){ | 
| nyatla | 42:f83aa17dcae5 | 26 | NyLPC_cHttpdConnection_sendResponseHeader2(i_connection,500,STR_TEXT_HTML,0,NULL); | 
| nyatla | 42:f83aa17dcae5 | 27 | return NyLPC_TBool_FALSE; | 
| nyatla | 42:f83aa17dcae5 | 28 | } | 
| nyatla | 42:f83aa17dcae5 | 29 | NyLPC_TInt16 l; | 
| nyatla | 42:f83aa17dcae5 | 30 | if(NyLPC_cHttpBodyParser_parseStream(i_body_parser,NyLPC_cHttpdConnection_refStream(i_connection),buf,SIZE_OF_FBUF,&l)){ | 
| nyatla | 42:f83aa17dcae5 | 31 | while(l>0){ | 
| nyatla | 42:f83aa17dcae5 | 32 | fwrite(buf,1,l,fp); | 
| nyatla | 42:f83aa17dcae5 | 33 | if(!NyLPC_cHttpBodyParser_parseStream(i_body_parser,NyLPC_cHttpdConnection_refStream(i_connection),buf,SIZE_OF_FBUF,&l)){ | 
| nyatla | 42:f83aa17dcae5 | 34 | NyLPC_OnErrorGoto(Error_FILE); | 
| nyatla | 42:f83aa17dcae5 | 35 | } | 
| nyatla | 42:f83aa17dcae5 | 36 | } | 
| nyatla | 42:f83aa17dcae5 | 37 | } | 
| nyatla | 42:f83aa17dcae5 | 38 | fclose(fp); | 
| nyatla | 42:f83aa17dcae5 | 39 | //write response | 
| nyatla | 42:f83aa17dcae5 | 40 | NyLPC_cHttpdConnection_sendResponseHeader2(i_connection,200,STR_TEXT_HTML,0,NULL); | 
| nyatla | 42:f83aa17dcae5 | 41 | return NyLPC_TBool_TRUE; | 
| nyatla | 42:f83aa17dcae5 | 42 | Error_FILE: | 
| nyatla | 42:f83aa17dcae5 | 43 | fclose(fp); | 
| nyatla | 42:f83aa17dcae5 | 44 | NyLPC_cHttpdConnection_sendResponseHeader2(i_connection,500,STR_TEXT_HTML,0,NULL); | 
| nyatla | 42:f83aa17dcae5 | 45 | return NyLPC_TBool_FALSE; | 
| nyatla | 42:f83aa17dcae5 | 46 | } | 
| nyatla | 42:f83aa17dcae5 | 47 | |
| nyatla | 42:f83aa17dcae5 | 48 | static NyLPC_TBool create_handler(NyLPC_TcHttpdConnection_t* i_connection,const NyLPC_TChar* i_fname) | 
| nyatla | 42:f83aa17dcae5 | 49 | { | 
| nyatla | 42:f83aa17dcae5 | 50 | FILE *fp; | 
| nyatla | 42:f83aa17dcae5 | 51 | fp = fopen(i_fname, "w"); | 
| nyatla | 42:f83aa17dcae5 | 52 | if(fp!=NULL){ | 
| nyatla | 42:f83aa17dcae5 | 53 | fclose(fp); | 
| nyatla | 42:f83aa17dcae5 | 54 | NyLPC_cHttpdConnection_sendResponseHeader2(i_connection,200,STR_TEXT_HTML,0,NULL); | 
| nyatla | 42:f83aa17dcae5 | 55 | return NyLPC_TBool_TRUE; | 
| nyatla | 42:f83aa17dcae5 | 56 | } | 
| nyatla | 42:f83aa17dcae5 | 57 | NyLPC_cHttpdConnection_sendResponseHeader2(i_connection,500,STR_TEXT_HTML,0,NULL); | 
| nyatla | 42:f83aa17dcae5 | 58 | return NyLPC_TBool_FALSE; | 
| nyatla | 42:f83aa17dcae5 | 59 | } | 
| nyatla | 42:f83aa17dcae5 | 60 | |
| nyatla | 42:f83aa17dcae5 | 61 | static NyLPC_TBool remove_handler(NyLPC_TcHttpdConnection_t* i_connection,const NyLPC_TChar* i_fname) | 
| nyatla | 42:f83aa17dcae5 | 62 | { | 
| nyatla | 42:f83aa17dcae5 | 63 | if(remove(i_fname)==0){ | 
| nyatla | 42:f83aa17dcae5 | 64 | NyLPC_cHttpdConnection_sendResponseHeader2(i_connection,200,STR_TEXT_HTML,0,NULL); | 
| nyatla | 42:f83aa17dcae5 | 65 | return NyLPC_TBool_TRUE; | 
| nyatla | 42:f83aa17dcae5 | 66 | } | 
| nyatla | 42:f83aa17dcae5 | 67 | //500ERROR | 
| nyatla | 42:f83aa17dcae5 | 68 | NyLPC_cHttpdConnection_sendResponseHeader2(i_connection,500,STR_TEXT_HTML,0,NULL); | 
| nyatla | 42:f83aa17dcae5 | 69 | return NyLPC_TBool_FALSE; | 
| nyatla | 42:f83aa17dcae5 | 70 | } | 
| nyatla | 42:f83aa17dcae5 | 71 | |
| nyatla | 42:f83aa17dcae5 | 72 | |
| nyatla | 42:f83aa17dcae5 | 73 | |
| nyatla | 42:f83aa17dcae5 | 74 | static void cModFileIoDumy_initialize(TcFileIoDumy_t* i_inst,const char* i_root_path) | 
| nyatla | 42:f83aa17dcae5 | 75 | { | 
| nyatla | 42:f83aa17dcae5 | 76 | NyLPC_cModFileIoBaseClass_initialize(&(i_inst->super),i_root_path); | 
| nyatla | 42:f83aa17dcae5 | 77 | i_inst->super._abstruct_function.upload=upload_handler; | 
| nyatla | 42:f83aa17dcae5 | 78 | i_inst->super._abstruct_function.create=create_handler; | 
| nyatla | 42:f83aa17dcae5 | 79 | i_inst->super._abstruct_function.remove=remove_handler; | 
| nyatla | 42:f83aa17dcae5 | 80 | } | 
| nyatla | 42:f83aa17dcae5 | 81 | #define cModFileIoDumy_finalize(i_inst) NyLPC_cModFileIoBaseClass_finalize(&(i_inst)->super) | 
| nyatla | 42:f83aa17dcae5 | 82 | #define cModFileIoDumy_canHandle(i_inst,i_connection) NyLPC_cModFileIoBaseClass_canHandle(&(i_inst)->super,i_connection) | 
| nyatla | 42:f83aa17dcae5 | 83 | #define cModFileIoDumy_execute(i_inst,i_connection) NyLPC_cModFileIoBaseClass_execute(&(i_inst)->super,i_connection) | 
| nyatla | 42:f83aa17dcae5 | 84 | |
| nyatla | 42:f83aa17dcae5 | 85 | |
| nyatla | 42:f83aa17dcae5 | 86 | |
| nyatla | 42:f83aa17dcae5 | 87 | |
| nyatla | 42:f83aa17dcae5 | 88 | |
| nyatla | 42:f83aa17dcae5 | 89 | |
| nyatla | 42:f83aa17dcae5 | 90 | |
| nyatla | 42:f83aa17dcae5 | 91 | namespace MiMic | 
| nyatla | 42:f83aa17dcae5 | 92 | { | 
| nyatla | 42:f83aa17dcae5 | 93 | |
| nyatla | 42:f83aa17dcae5 | 94 | |
| nyatla | 42:f83aa17dcae5 | 95 | ModFileIo::ModFileIo(const char* i_path):ModBaseClass(i_path) | 
| nyatla | 42:f83aa17dcae5 | 96 | { | 
| nyatla | 42:f83aa17dcae5 | 97 | } | 
| nyatla | 42:f83aa17dcae5 | 98 | ModFileIo::ModFileIo() | 
| nyatla | 42:f83aa17dcae5 | 99 | { | 
| nyatla | 42:f83aa17dcae5 | 100 | } | 
| nyatla | 42:f83aa17dcae5 | 101 | ModFileIo::~ModFileIo() | 
| nyatla | 42:f83aa17dcae5 | 102 | { | 
| nyatla | 42:f83aa17dcae5 | 103 | } | 
| nyatla | 42:f83aa17dcae5 | 104 | void ModFileIo::setParam(const char* i_path) | 
| nyatla | 42:f83aa17dcae5 | 105 | { | 
| nyatla | 42:f83aa17dcae5 | 106 | ModBaseClass::setParam(i_path); | 
| nyatla | 42:f83aa17dcae5 | 107 | } | 
| nyatla | 42:f83aa17dcae5 | 108 | bool ModFileIo::execute(HttpdConnection& i_connection) | 
| nyatla | 42:f83aa17dcae5 | 109 | { | 
| nyatla | 42:f83aa17dcae5 | 110 | //check parametor | 
| nyatla | 42:f83aa17dcae5 | 111 | if(this->_path==NULL){ | 
| nyatla | 42:f83aa17dcae5 | 112 | return false; | 
| nyatla | 42:f83aa17dcae5 | 113 | } | 
| nyatla | 42:f83aa17dcae5 | 114 | TcModFileIoDumy mod; | 
| nyatla | 42:f83aa17dcae5 | 115 | cModFileIoDumy_initialize(&mod,this->_path); | 
| nyatla | 42:f83aa17dcae5 | 116 | if(cModFileIoDumy_canHandle(&mod,i_connection._ref_inst)){ | 
| nyatla | 42:f83aa17dcae5 | 117 | cModFileIoDumy_execute(&mod,i_connection._ref_inst); | 
| nyatla | 42:f83aa17dcae5 | 118 | cModFileIoDumy_finalize(&mod); | 
| nyatla | 42:f83aa17dcae5 | 119 | return true; | 
| nyatla | 42:f83aa17dcae5 | 120 | } | 
| nyatla | 42:f83aa17dcae5 | 121 | cModFileIoDumy_finalize(&mod); | 
| nyatla | 42:f83aa17dcae5 | 122 | return false; | 
| nyatla | 42:f83aa17dcae5 | 123 | } | 
| nyatla | 42:f83aa17dcae5 | 124 | |
| nyatla | 42:f83aa17dcae5 | 125 | |
| nyatla | 42:f83aa17dcae5 | 126 | |
| nyatla | 42:f83aa17dcae5 | 127 | |
| nyatla | 42:f83aa17dcae5 | 128 | } | 
