Exemplo n.º 1
0
void		Home::setSurname(void *cmdptr, void *idptr)
{
	std::vector<const char *> *value = (std::vector<const char *> *)cmdptr;
	std::vector<int> *id = (std::vector<int> *)idptr;
	std::map<int, UserInfo *>::iterator it;
	static int tmp = 0;

	if ((it = _musers.find(id[0][0])) == _musers.end()) {
		UserInfo *info = new UserInfo;
		if (tmp == 0)
			_myid = id[0][0];
		tmp++;
		info->set_id(id[0][0]);
		std::cout << info->get_id() << std::endl;
		info->set_surname((*value)[0]);
		_musers[id[0][0]] = info;
		addContact(_musers[id[0][0]]);
	}
	else {
		UserInfo *tmp = _musers[id[0][0]];
		std::string stmp;
		tmp->set_surname((*value)[0]);
		stmp = tmp->get_name() + " " + tmp->get_surname();
		std::map<int, t_contact *>::iterator it;
		if ((it = _bcontact.find(id[0][0])) == _bcontact.end())
			return;
		_bcontact[id[0][0]]->item->setText(stmp.c_str());
	}
}
Exemplo n.º 2
0
void		Home::setCallRequest(void *cmdptr, void *idptr)
{
	std::vector<const char *> *value = (std::vector<const char *> *)cmdptr;
	std::vector<int> *id = (std::vector<int> *)idptr;
	IPacketInfo	*packet_info = new PacketInfo();
	int i = (*id)[0];
	std::cout << i << std::endl;
	UserInfo *pkt = _musers[id[0][0]];
	std::string tmp;
	QMessageBox msgBox;
	std::string ip = value[0][1];
	char *answer_user = new char[1];

	if ((int)(*value)[0][0] == 1)
		tmp = pkt->get_name() + " audio call you";
	if ((int)(*value)[0][0] == 2)
		tmp = pkt->get_name() + " video call you";

	msgBox.setText(tmp.c_str());
	msgBox.setInformativeText("Do you want to receve that call ?");
	msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::Ignore);
	msgBox.setDefaultButton(QMessageBox::Yes);
	int res = msgBox.exec();
	packet_info->setCmd(26);
	packet_info->getInts().push_back(pkt->get_id());
	if (res == QMessageBox::Yes)
		answer_user[0] = 0; // OK
	else
		answer_user[0] = 9; // OK
	// #PA #bind
	int modules = -1;
	int port = 2000;
	std::stringstream ss;
	bool retbind = false;
	while (retbind == false)
	{
		ss.flush();
		ss << port;
		std::string sport;
		ss >> sport;
		retbind = _links[(*value)[0][0] - 1]->bindSocket(sport.c_str());
		++port;
		if (port >= 65535)
			answer_user[0] = 9;
	}
	// 3*  PORT     ||| P1 : audio    P2 : video     P3 : text
	ss >> port;
	packet_info->getChars().push_back(answer_user);
	if ((int)(*value)[0][0] == 1)
		packet_info->getInts().push_back(port); // P1
	else
		packet_info->getInts().push_back(0);
	if ((int)(*value)[0][0] == 2)
		packet_info->getInts().push_back(port); // P1
	else
		packet_info->getInts().push_back(0);
	packet_info->getInts().push_back(0); // P3
	Parser *parse;
	parse = ((ThreadCom *)_com)->getParser();
	Packet *enpacked;
	enpacked = (Packet *)parse->encode(packet_info);
	std::stringbuf sz;
	sz >> enpacked;
	if ((((ThreadCom *)_com)->getNetwork()->sendSocket(1, (void *)sz.str().c_str(), 65) == false))
		std::cout << "Error Send\n";
	delete(enpacked);
	//LANCER LA RECEPTION UDP
	if ((int)(*value)[0][0] == 1) {
		timer = new QTimer;
		_sockudp[0] = _links[0]->recvFromSocket();
		if (!sound.initializePA())
			std::cerr << "Error on InitPa()" << std::endl;
		if (!(sound.initializeInput()))
			std::cerr << "Error on initParams()" << std::endl;
		if (!(sound.initializeOutput()))
			std::cerr << "Error on initParams()" << std::endl;
		sound.openStream();
		sound.startStream();
		encode.opusEncoderCreate();
		encode.opusDecoderCreate();
		connect(timer, SIGNAL(timeout()), this, SLOT(threadCall()));
		timer->start();
	}
	if ((int)(*value)[0][0] == 2) {
		_sockudp[1] = _links[1]->recvFromSocket();
		timer = new QTimer;
		connect(timer, SIGNAL(timeout()), this, SLOT(recvFrameFrom()));
		timer->start();
	}
}