Пример #1
0
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);

}
Пример #2
0
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();
		}
	}
}
Пример #4
0
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();
	}
}
Пример #6
0
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();
	}
}
Пример #8
0
//	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");
}