コード例 #1
0
void ICQClient::setStatus(unsigned short status)
{
    if (status == ICQ_STATUS_OFFLINE){
        switch (m_state){
        case Reconnect:{
                m_reconnectTime = 0;
                m_state = Logoff;
                ICQEvent e(EVENT_STATUS_CHANGED, Uin);
                process_event(&e);
                break;
            }
        case Logoff:
            break;
        default:
            close();
            uStatus = ICQ_STATUS_OFFLINE;
            if (m_state == ForceReconnect){
                m_state = Reconnect;
                time_t reconnect;
                time(&reconnect);
                reconnect += RECONNECT_TIMEOUT;
                if (m_reconnectTime < reconnect) m_reconnectTime = reconnect;
            }else{
                m_state = Logoff;
            }
            ICQEvent e(EVENT_STATUS_CHANGED, Uin);
            process_event(&e);
            time_t now;
            time(&now);
            list<ICQUser*>::iterator it;
            for (it = contacts.users.begin(); it != contacts.users.end(); it++){
                if ((*it)->uStatus == ICQ_STATUS_OFFLINE) continue;
                (*it)->setOffline();
                ICQEvent e(EVENT_STATUS_CHANGED, (*it)->Uin);
                process_event(&e);
            }
        }
        return;
    }
    if (m_fd == -1){
        m_nSequence = rand() & 0x7FFFF;
        m_nMsgSequence = 1;
        m_reconnectTime = 0;
        m_state = Uin ? Connect : Register;
        ICQEvent e(EVENT_STATUS_CHANGED, Uin);
        process_event(&e);
        connect(ServerHost.c_str(), ServerPort());
    }
    if (m_state != Logged){
        m_nLogonStatus = status;
        return;
    }
    sendStatus(status);
}
コード例 #2
0
ファイル: Reporting.cpp プロジェクト: JakotsuTheOne/ppsspp
	bool SendReportRequest(const char *uri, const std::string &data, Buffer *output = NULL)
	{
		bool result = false;
		net::AutoInit netInit;
		http::Client http;
		Buffer theVoid;

		if (output == NULL)
			output = &theVoid;

		if (http.Resolve(ServerHostname(), ServerPort()))
		{
			http.Connect();
			http.POST("/report/message", data, "application/x-www-form-urlencoded", output);
			http.Disconnect();
			result = true;
		}

		return result;
	}
コード例 #3
0
ファイル: Reporting.cpp プロジェクト: makotech222/ppsspp
	bool SendReportRequest(const char *uri, const std::string &data, const std::string &mimeType, Buffer *output = NULL)
	{
		bool result = false;
		http::Client http;
		Buffer theVoid;

		if (output == NULL)
			output = &theVoid;

		const char *serverHost = ServerHostname();
		if (!serverHost)
			return false;

		if (http.Resolve(serverHost, ServerPort())) {
			http.Connect();
			int result = http.POST(uri, data, mimeType, output);
			http.Disconnect();

			return result >= 200 && result < 300;
		} else {
			return false;
		}
	}