From b9852a65f0facc5c2e7239f4751050f12bc15a4d Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 1 May 2015 17:13:35 +0000 Subject: unused file removed git-svn-id: http://svn.miranda-ng.org/main/trunk@13337 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Steam/src/Junk/steam_thread.cpp | 171 ++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 protocols/Steam/src/Junk/steam_thread.cpp (limited to 'protocols/Steam/src/Junk') diff --git a/protocols/Steam/src/Junk/steam_thread.cpp b/protocols/Steam/src/Junk/steam_thread.cpp new file mode 100644 index 0000000000..98915f87cd --- /dev/null +++ b/protocols/Steam/src/Junk/steam_thread.cpp @@ -0,0 +1,171 @@ +#include "stdafx.h" + +void CSteamProto::PollServer(const char *token, const char *umqId, UINT32 messageId, SteamWebApi::PollApi::PollResult *pollResult) +{ + debugLogA("CSteamProto::PollServer: call SteamWebApi::PollApi::Poll"); + SteamWebApi::PollApi::Poll(m_hNetlibUser, token, umqId, messageId, pollResult); + + if (!pollResult->IsSuccess()) + return; + + CMStringA updatedIds; + for (size_t i = 0; i < pollResult->GetItemCount(); i++) + { + const SteamWebApi::PollApi::PoolItem *item = pollResult->GetAt(i); + switch (item->GetType()) + { + case SteamWebApi::PollApi::POOL_TYPE_TYPING: + break; + + case SteamWebApi::PollApi::POOL_TYPE_MESSAGE: + { + SteamWebApi::PollApi::Message *message = (SteamWebApi::PollApi::Message*)item; + + MCONTACT hContact = FindContact(message->GetSteamId()); + if (hContact) + { + const wchar_t *text = message->GetText(); + + PROTORECVEVENT recv = { 0 }; + recv.flags = PREF_UTF; + recv.timestamp = message->GetTimestamp(); + recv.szMessage = mir_utf8encodeW(text); + + ProtoChainRecvMsg(hContact, &recv); + } + } + break; + + case SteamWebApi::PollApi::POOL_TYPE_MYMESSAGE: + { + SteamWebApi::PollApi::Message *message = (SteamWebApi::PollApi::Message*)item; + + MCONTACT hContact = FindContact(message->GetSteamId()); + if (hContact) + { + const wchar_t *text = message->GetText(); + + AddDBEvent(hContact, EVENTTYPE_MESSAGE, time(NULL), DBEF_UTF | DBEF_SENT, lstrlen(text), (BYTE*)mir_utf8encodeW(text)); + } + } + break; + + case SteamWebApi::PollApi::POOL_TYPE_STATE: + { + SteamWebApi::PollApi::State *state = (SteamWebApi::PollApi::State*)item; + + WORD status = CSteamProto::SteamToMirandaStatus(state->GetStatus()); + const char *steamId = state->GetSteamId(); + const wchar_t *nickname = state->GetNickname(); + + if (IsMe(steamId)) + { + if (status == ID_STATUS_OFFLINE) + continue; + + if (status != m_iStatus) + { + debugLogA("Change own status to %i", status); + WORD oldStatus = m_iStatus; + m_iStatus = m_iDesiredStatus = status; + ProtoBroadcastAck(NULL, ACKTYPE_STATUS, ACKRESULT_SUCCESS, (HANDLE)oldStatus, m_iStatus); + } + } + /*else + { + MCONTACT hContact = FindContact(steamId); + if (hContact) + SetContactStatus(hContact, status); + }*/ + + if (updatedIds.IsEmpty()) + updatedIds.Append(steamId); + else + updatedIds.AppendFormat(",%s", steamId); + } + break; + + case SteamWebApi::PollApi::POOL_TYPE_CONTACT_ADD: + { + SteamWebApi::PollApi::Relationship *crs = (SteamWebApi::PollApi::Relationship*)item; + + const char *steamId = crs->GetSteamId(); + if (updatedIds.IsEmpty()) + updatedIds.Append(steamId); + else + updatedIds.AppendFormat(",%s", steamId); + } + break; + + case SteamWebApi::PollApi::POOL_TYPE_CONTACT_REMOVE: + { + SteamWebApi::PollApi::Relationship *crs = (SteamWebApi::PollApi::Relationship*)item; + + const char *steamId = crs->GetSteamId(); + MCONTACT hContact = FindContact(steamId); + if (hContact) + CallService(MS_DB_CONTACT_DELETE, hContact, 0); + } + break; + + case SteamWebApi::PollApi::POOL_TYPE_CONTACT_REQUEST: + { + SteamWebApi::PollApi::Relationship *crs = (SteamWebApi::PollApi::Relationship*)item; + + const char *steamId = crs->GetSteamId(); + + MCONTACT hContact = FindContact(steamId); + if (!hContact) + hContact = AddContact(steamId, true); + + RaiseAuthRequestThread((void*)hContact); + } + break; + } + } + + if (!updatedIds.IsEmpty()) + UpdateContactsThread(mir_strdup(updatedIds)); +} + +void CSteamProto::PollingThread(void*) +{ + debugLogA("CSteamProto::PollingThread: entering"); + + ptrA token(getStringA("TokenSecret")); + ptrA umqId(getStringA("UMQID")); + UINT32 messageId = getDword("MessageID", 0); + + SteamWebApi::PollApi::PollResult pollResult; + while (!m_bTerminated) + { + PollServer(token, umqId, messageId, &pollResult); + + if (pollResult.IsNeedRelogin()) + { + debugLogA("CSteamProto::PollingThread: need to relogin"); + SetStatus(ID_STATUS_OFFLINE); + } + + if (!pollResult.IsSuccess()) + { + debugLogA("CSteamProto::PollServer: call SteamWebApi::PollApi::Poll"); + SetStatus(ID_STATUS_OFFLINE); + + // token has expired + if (pollResult.GetStatus() == HTTP_STATUS_UNAUTHORIZED) + { + delSetting("TokenSecret"); + //delSetting("Cookie"); + } + + break; + } + + messageId = pollResult.GetMessageId(); + setDword("MessageID", messageId); + } + + m_hPollingThread = NULL; + debugLogA("CSteamProto::PollingThread: leaving"); +} \ No newline at end of file -- cgit v1.2.3