int main(int argc,char *argv[],char *envp[]) { int fdA,fdB,fdDelayA,fdDelayB; int status; char *bufferA,*bufferB; pid_t pid; pagesize = getpagesize(); if ((prepareFile("A",&fdA)) || (prepareFile("B",&fdB)) || (prepareFile("DelayA",&fdDelayA)) || (prepareFile("DelayB",&fdDelayB)) || (mapBuffer(&bufferA,fdDelayA,fdB)) || (mapBuffer(&bufferB,fdDelayB,fdA))) exit(1); pid = fork(); if (pid == 0) { status = startIO(fdA,bufferA); exit(status); } if (pid == -1) { exit(1); } status = startIO(fdB,bufferB); exit(status); }
void UploadManager::on(AdcCommand::GET, UserConnection* aSource, const AdcCommand& c) throw() { int64_t aBytes = Util::toInt64(c.getParam(3)); int64_t aStartPos = Util::toInt64(c.getParam(2)); const string& fname = c.getParam(1); const string& type = c.getParam(0); if(prepareFile(*aSource, type, fname, aStartPos, aBytes, c.hasFlag("RE", 4))) { Upload* u = aSource->getUpload(); dcassert(u != NULL); AdcCommand cmd(AdcCommand::CMD_SND); cmd.addParam(type).addParam(fname) .addParam(Util::toString(u->getPos())) .addParam(Util::toString(u->getSize() - u->getPos())); if(c.hasFlag("ZL", 4)) { u->setStream(new FilteredInputStream<ZFilter, true>(u->getStream())); u->setFlag(Upload::FLAG_ZUPLOAD); cmd.addParam("ZL1"); } aSource->send(cmd); u->setStart(GET_TICK()); aSource->setState(UserConnection::STATE_RUNNING); aSource->transmitFile(u->getStream()); fire(UploadManagerListener::Starting(), u); } }
void DownloadManager::on(Command::SND, UserConnection* aSource, const Command& cmd) throw() { int64_t bytes = Util::toInt64(cmd.getParam(3)); if(cmd.getParam(0) == "tthl") { if(aSource->getState() != UserConnection::STATE_TREE) { dcdebug("DM::SND Bad state, ignoring\n"); return; } Download* d = aSource->getDownload(); d->setFile(new TreeOutputStream(d->getOldDownload()->getTigerTree())); d->setSize(bytes); d->setPos(0); dcassert(d->isSet(Download::FLAG_TREE_DOWNLOAD)); aSource->setState(UserConnection::STATE_DONE); if(cmd.hasFlag("ZL", 4)) { d->setFile(new FilteredOutputStream<UnZFilter, true>(d->getFile())); } aSource->setDataMode(); } else if(cmd.getParam(0) == "file") { if(aSource->getState() != UserConnection::STATE_FILELENGTH) { dcdebug("DM::onFileLength Bad state, ignoring\n"); return; } if(prepareFile(aSource, (bytes == -1) ? -1 : aSource->getDownload()->getPos() + bytes)) { aSource->setDataMode(); } } }
int test_store_restore(TestData* testdata){ MotionDetect md; test_bool(initMotionDetect(&md, &testdata->fi, "test") == VS_OK); test_bool(configureMotionDetect(&md)== VS_OK); LocalMotions lms; int i; for(i=0; i<2; i++){ test_bool(motionDetection(&md, &lms,&testdata->frames[i])== VS_OK); if (i==0) vs_vector_del(&lms); } FILE* f = fopen("lmtest","w"); storeLocalmotions(f,&lms); fclose(f); f = fopen("lmtest","r"); LocalMotions test = restoreLocalmotions(f); fclose(f); storeLocalmotions(stderr,&test); compare_localmotions(&lms,&test); fprintf(stderr,"\n** LM and LMS OKAY\n"); f = fopen("lmstest","w"); md.frameNum=1; prepareFile(&md,f); writeToFile(&md,f,&lms); md.frameNum=2; writeToFile(&md,f,&test); fclose(f); f = fopen("lmstest","r"); test_bool(readFileVersion(f)==1); LocalMotions read1; test_bool(readFromFile(f,&read1)==1); compare_localmotions(&lms,&read1); LocalMotions read2; test_bool(readFromFile(f,&read2)==2); compare_localmotions(&test,&read2); fclose(f); fprintf(stderr,"** Reading file stepwise OKAY\n"); vs_vector_del(&read1); vs_vector_del(&read2); vs_vector_del(&test); vs_vector_del(&lms); f = fopen("lmstest","r"); ManyLocalMotions mlms; test_bool(readLocalMotionsFile(f,&mlms)==VS_OK); test_bool(vs_vector_size(&mlms)==2); fprintf(stderr,"** Entire file routine OKAY\n\n"); for(i=0; i< vs_vector_size(&mlms); i++){ if(MLMGet(&mlms,i)) vs_vector_del(MLMGet(&mlms,i)); } vs_vector_del(&mlms); return 1; }
void DownloadManager::on(UserConnectionListener::Sending, UserConnection* aSource, int64_t aBytes) throw() { if(aSource->getState() != UserConnection::STATE_FILELENGTH) { dcdebug("DM::onFileLength Bad state, ignoring\n"); return; } if(prepareFile(aSource, (aBytes == -1) ? -1 : aSource->getDownload()->getPos() + aBytes)) { aSource->setDataMode(); } }
void UploadManager::on(UserConnectionListener::Get, UserConnection* aSource, const string& aFile, int64_t aResume) throw() { if(aSource->getState() != UserConnection::STATE_GET) { dcdebug("UM::onGet Bad state, ignoring\n"); return; } if(prepareFile(*aSource, Transfer::TYPE_FILE, Util::toAdcFile(aFile), aResume, -1)) { aSource->setState(UserConnection::STATE_SEND); aSource->fileLength(Util::toString(aSource->getUpload()->getSize())); } }
void DownloadManager::on(UserConnectionListener::FileLength, UserConnection* aSource, int64_t aFileLength) throw() { if(aSource->getState() != UserConnection::STATE_FILELENGTH) { dcdebug("DM::onFileLength Bad state, ignoring\n"); return; } if(prepareFile(aSource, aFileLength)) { aSource->setDataMode(); aSource->startSend(); } }
// This method converts a Message from ui layer to a Datagram that can be passed to network layer void lmcMessaging::prepareMessage(MessageType type, qint64 msgId, bool retry, QString* lpszUserId, XmlMessage* pMessage) { if(!isConnected()) { lmcTrace::write("Warning: Not connected. Message not sent"); return; } if(localUser->id.isNull()) { lmcTrace::write("Warning: Local user not initialized. Message not sent"); return; } User* receiver = getUser(lpszUserId); switch(type) { case MT_Status: pMessage->addData(XN_STATUS, localUser->status); break; case MT_UserName: pMessage->addData(XN_NAME, localUser->name); break; case MT_Note: pMessage->addData(XN_NOTE, localUser->note); break; case MT_Ping: // add message to pending list if(!retry) addPendingMsg(msgId, MT_Ping, lpszUserId, pMessage); break; case MT_Message: if(!receiver) { emit messageReceived(MT_Failed, lpszUserId, pMessage); break; } // add message to pending list if(!retry) addPendingMsg(msgId, MT_Message, lpszUserId, pMessage); break; case MT_GroupMessage: break; case MT_PublicMessage: break; case MT_Broadcast: break; case MT_Acknowledge: break; case MT_Query: // if its a 'get' query add message to pending list if(pMessage->data(XN_QUERYOP) == QueryOpNames[QO_Get] && !retry) addPendingMsg(msgId, MT_Query, lpszUserId, pMessage); else if(pMessage->data(XN_QUERYOP) == QueryOpNames[QO_Result]) getUserInfo(pMessage); break; case MT_ChatState: break; case MT_File: case MT_Avatar: prepareFile(type, msgId, retry, lpszUserId, pMessage); break; case MT_Folder: prepareFolder(type, msgId, retry, lpszUserId, pMessage); break; default: break; } if(!receiver) { lmcTrace::write("Warning: Recipient " + *lpszUserId + " not found. Message not sent"); return; } lmcTrace::write("Sending message type " + QString::number(type) + " to user " + receiver->id + " at " + receiver->address); QString szMessage = Message::addHeader(type, msgId, &localUser->id, lpszUserId, pMessage); pNetwork->sendMessage(&receiver->id, &receiver->address, &szMessage); lmcTrace::write("Message sending done"); }