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; }