bool DeployMonitor::fileUploadTwoWay(MonitorWorker *mw, Properties &props) { trace_enter(); string fileName = props.getProperty("file.name"); string filePath = getDeployPath(fileName); trace("filepath=" << filePath); OSFile f; string mode("rb"); if (f.open(filePath, mode) == false) { mw->returnFail("deploy", "file.download", "File open error"); return false; } unsigned char buf[FILE_BUF_SIZE]; int fileSize; int rSize; fileSize = f.sizeOf(); trace("[fileUpload] filepath=" << filePath << ", fileSize=" << fileSize); int wlen = 0; try { while (fileSize > 0) { rSize = fileSize > FILE_BUF_SIZE ? FILE_BUF_SIZE : fileSize; rSize = f.read(buf, rSize); if (rSize <= 0) break; mw->writeString("ver=1.0;target=deploy;cmd=file.upload;success=ok;ret=ok;payloadSize=" + StringUtil::intToStr(rSize) + "\n"); wlen += mw->write(buf, rSize); fileSize -= rSize; trace("[fileUpload] Write done : fileSize=" << fileSize << ", writeSize=" << wlen); mw->readLine((char *) buf, FILE_BUF_SIZE); } f.close(); mw->writeString("ver=1.0;target=deploy;cmd=file.upload;success=ok;ret=ok;payloadSize=0\n"); trace("[fileUpload] End : fileSize=" << fileSize << ", writeSize=" << wlen); return true; } catch (exception &ex) { log_error(ex.what()); } f.close(); return false; }
bool DeployMonitor::fileDownload(MonitorWorker *mw, Properties &props) { trace_enter(); string fileName = props.getProperty("file.name"); int fileSize = props.getInt("payloadSize"); int rSize; unsigned char buf[FILE_BUF_SIZE]; string filePath = createDeployPath(fileName); string mode("wb"); OSFile f; trace("[fileDownload] filepath=" << filePath << ", fileSize==" << fileSize); if (f.open(filePath, mode) == false) { trace("File open error"); mw->returnFail("deploy", "file.download", "File open error"); return false; } int wlen = 0; try { while (fileSize > 0) { rSize = fileSize > FILE_BUF_SIZE ? FILE_BUF_SIZE : fileSize; rSize = mw->read(buf, rSize); wlen += f.write(buf, rSize); fileSize -= rSize; } mw->returnOK("deploy", "file.download", "ok"); f.close(); trace("[fileDownload] End : fileSize=" << fileSize << ", writeSize=" << wlen); return true; } catch (exception &ex) { mw->returnFail("deploy", "file.download", ex.what()); } f.close(); return false; }