Lines Matching refs:context
46 bool HdcTransferBase::ResetCtx(CtxFile *context, bool full) in ResetCtx() argument
49 *context = {}; in ResetCtx()
50 context->fsOpenReq.data = context; in ResetCtx()
51 context->fsCloseReq.data = context; in ResetCtx()
52 context->thisClass = this; in ResetCtx()
53 context->loop = loopTask; in ResetCtx()
54 context->cb = OnFileIO; in ResetCtx()
56 context->closeNotify = false; in ResetCtx()
57 context->indexIO = 0; in ResetCtx()
58 context->lastErrno = 0; in ResetCtx()
59 context->ioFinish = false; in ResetCtx()
60 context->closeReqSubmitted = false; in ResetCtx()
64 int HdcTransferBase::SimpleFileIO(CtxFile *context, uint64_t index, uint8_t *sendBuf, int bytes) in SimpleFileIO() argument
86 if (context->ioFinish) { in SimpleFileIO()
92 ioContext->context = context; in SimpleFileIO()
95 …if (context->master) { // master just read, and slave just write.when master/read, sendBuf can be… in SimpleFileIO()
97 uv_fs_read(context->loop, req, context->fsOpenReq.result, &iov, 1, index, context->cb); in SimpleFileIO()
106 uv_fs_write(context->loop, req, context->fsOpenReq.result, &iov, 1, index, context->cb); in SimpleFileIO()
126 CtxFile *context = (CtxFile *)req->data; in OnFileClose() local
127 context->closeReqSubmitted = false; in OnFileClose()
128 HdcTransferBase *thisClass = (HdcTransferBase *)context->thisClass; in OnFileClose()
129 if (context->closeNotify) { in OnFileClose()
132 thisClass->WhenTransferFinish(context); in OnFileClose()
138 void HdcTransferBase::SetFileTime(CtxFile *context) in SetFileTime() argument
140 if (!context->transferConfig.holdTimestamp) { in SetFileTime()
143 if (!context->transferConfig.mtime) { in SetFileTime()
147 … double aTimeSec = static_cast<long double>(context->transferConfig.atime) / HDC_TIME_CONVERT_BASE; in SetFileTime()
148 … double mTimeSec = static_cast<long double>(context->transferConfig.mtime) / HDC_TIME_CONVERT_BASE; in SetFileTime()
149 uv_fs_futime(nullptr, &fs, context->fsOpenReq.result, aTimeSec, mTimeSec, nullptr); in SetFileTime()
153 bool HdcTransferBase::SendIOPayload(CtxFile *context, uint64_t index, uint8_t *data, int dataSize) in SendIOPayload() argument
163 payloadHead.compressType = context->transferConfig.compressType; in SendIOPayload()
206 CtxFile *context = reinterpret_cast<CtxFile *>(contextIO->context); in OnFileIO() local
207 HdcTransferBase *thisClass = (HdcTransferBase *)context->thisClass; in OnFileIO()
212 if (context->ioFinish) { in OnFileIO()
220 context->closeNotify = true; in OnFileIO()
221 context->lastErrno = abs(req->result); in OnFileIO()
222 context->ioFinish = true; in OnFileIO()
225 context->indexIO += req->result; in OnFileIO()
228 WRITE_LOG(LOG_DEBUG, "read file data %" PRIu64 "/%" PRIu64 "", context->indexIO, in OnFileIO()
229 context->fileSize); in OnFileIO()
231 … if (!thisClass->SendIOPayload(context, context->indexIO - req->result, bufIO, req->result)) { in OnFileIO()
232 context->ioFinish = true; in OnFileIO()
235 if (context->indexIO < context->fileSize) { in OnFileIO()
236 thisClass->SimpleFileIO(context, context->indexIO, nullptr, in OnFileIO()
239 context->ioFinish = true; in OnFileIO()
243 WRITE_LOG(LOG_DEBUG, "write file data %" PRIu64 "/%" PRIu64 "", context->indexIO, in OnFileIO()
244 context->fileSize); in OnFileIO()
246 if (context->indexIO >= context->fileSize) { in OnFileIO()
249 context->closeNotify = true; in OnFileIO()
250 context->ioFinish = true; in OnFileIO()
251 thisClass->SetFileTime(context); in OnFileIO()
254 context->ioFinish = true; in OnFileIO()
258 if (context->ioFinish) { in OnFileIO()
262 … uv_fs_fsync(thisClass->loopTask, &context->fsCloseReq, context->fsOpenReq.result, nullptr); in OnFileIO()
265 thisClass->taskInfo->channelId, context->fsOpenReq.result, in OnFileIO()
266 context->closeReqSubmitted, &context->fsCloseReq); in OnFileIO()
267 if (context->lastErrno == 0 && !context->closeReqSubmitted) { in OnFileIO()
268 context->closeReqSubmitted = true; in OnFileIO()
270 … uv_fs_close(thisClass->loopTask, &context->fsCloseReq, context->fsOpenReq.result, OnFileClose); in OnFileIO()
272 thisClass->WhenTransferFinish(context); in OnFileIO()
283 CtxFile *context = (CtxFile *)req->data; in OnFileOpen() local
284 HdcTransferBase *thisClass = (HdcTransferBase *)context->thisClass; in OnFileOpen()
288 context->localPath.c_str(), thisClass->taskInfo->channelId, context->fsOpenReq.result); in OnFileOpen()
295 context->localPath.c_str()); in OnFileOpen()
296 if (context->isDir) { in OnFileOpen()
304 thisClass->ResetCtx(context); in OnFileOpen()
305 if (context->master) { in OnFileOpen()
308 uv_fs_fstat(nullptr, &fs, context->fsOpenReq.result, nullptr); in OnFileOpen()
309 TransferConfig &st = context->transferConfig; in OnFileOpen()
311 st.optionalName = context->localName; in OnFileOpen()
316 st.path = context->remotePath; in OnFileOpen()
318 context->fileSize = st.fileSize; in OnFileOpen()
320 context->fileMode.perm = fs.statbuf.st_mode; in OnFileOpen()
321 context->fileMode.u_id = fs.statbuf.st_uid; in OnFileOpen()
322 context->fileMode.g_id = fs.statbuf.st_gid; in OnFileOpen()
323 WRITE_LOG(LOG_DEBUG, "permissions: %o u_id = %u, g_id = %u", context->fileMode.perm, in OnFileOpen()
324 context->fileMode.u_id, context->fileMode.g_id); in OnFileOpen()
328 getfilecon(context->localPath.c_str(), &con); in OnFileOpen()
330 context->fileMode.context = con; in OnFileOpen()
336 thisClass->CheckMaster(context); in OnFileOpen()
338 if (context->fileModeSync) { in OnFileOpen()
339 FileMode &mode = context->fileMode; in OnFileOpen()
342 uv_fs_chmod(nullptr, &fs, context->localPath.c_str(), mode.perm, nullptr); in OnFileOpen()
343 uv_fs_chown(nullptr, &fs, context->localPath.c_str(), mode.u_id, mode.g_id, nullptr); in OnFileOpen()
347 if (!mode.context.empty()) { in OnFileOpen()
348 WRITE_LOG(LOG_DEBUG, "setfilecon from master = %s", mode.context.c_str()); in OnFileOpen()
349 setfilecon(context->localPath.c_str(), mode.context.c_str()); in OnFileOpen()
440 mode.context = con; in GetSubFilesRecursively()
446 mode.perm, mode.u_id, mode.g_id, mode.context.c_str()); in GetSubFilesRecursively()
577 … mode.fullName.c_str(), mode.perm, mode.u_id, mode.g_id, mode.context.c_str()); in CheckFilename()
584 if (!mode.context.empty()) { in CheckFilename()
585 WRITE_LOG(LOG_DEBUG, "setfilecon from master = %s", mode.context.c_str()); in CheckFilename()
586 setfilecon(localPath.c_str(), mode.context.c_str()); in CheckFilename()
622 bool HdcTransferBase::RecvIOPayload(CtxFile *context, uint8_t *data, int dataSize) in RecvIOPayload() argument
662 if (SimpleFileIO(context, pld.index, clearBuf, clearSize) < 0) { in RecvIOPayload()
680 CtxFile *context = &ctxNow; in CommandDispatch() local
681 …int ioRet = SimpleFileIO(context, context->indexIO, nullptr, Base::GetMaxBufSize() * maxTransferBu… in CommandDispatch()
686 context->transferBegin = Base::GetRuntimeMSec(); in CommandDispatch()
693 CtxFile *context = &ctxNow; in CommandDispatch() local
694 if (!RecvIOPayload(context, payload, payloadSize)) { in CommandDispatch()