コード例 #1
0
ファイル: turnclient.cpp プロジェクト: AlexeyProkhin/jreen
	void addChannelPeer(const QHostAddress &addr, int port)
	{
		ensurePermission(addr);

		StunAllocate::Channel c(addr, port);
		if(!pendingChannels.contains(c) && !desiredChannels.contains(c))
		{
			pendingChannels += c;

			tryChannelQueued();
		}
	}
コード例 #2
0
	void addChannelPeer(const QHostAddress &addr, int port)
	{
		ensurePermission(addr);

		StunAllocate::Channel c(addr, port);
		if(!desiredChannels.contains(c))
		{
			emit q->debugLine(QString("Setting channel for peer address/port %1;%2").arg(c.address.toString()).arg(c.port));

			desiredChannels += c;
			allocate->setChannels(desiredChannels);
		}
	}
コード例 #3
0
	void writeOrQueue(const QByteArray &buf, const QHostAddress &addr, int port)
	{
		Q_ASSERT(allocateStarted);

		StunAllocate::Channel c(addr, port);
		bool writeImmediately = false;
		bool requireChannel = desiredChannels.contains(c);

		QList<QHostAddress> actualPerms = allocate->permissions();
		if(actualPerms.contains(addr))
		{
			if(requireChannel)
			{
				QList<StunAllocate::Channel> actualChannels = allocate->channels();
				if(actualChannels.contains(c))
					writeImmediately = true;
			}
			else
				writeImmediately = true;
		}

		if(writeImmediately)
		{
			write(buf, addr, port);
		}
		else
		{
			Packet p;
			p.addr = addr;
			p.port = port;
			p.data = buf;
			p.requireChannel = requireChannel;
			outPending += p;

			ensurePermission(addr);
		}
	}