From a2ae51e943d855748962f4738dd9f87b96ad00b0 Mon Sep 17 00:00:00 2001 From: Alexander Lantsev Date: Wed, 24 Jun 2015 09:19:27 +0000 Subject: Steam: code cleanup git-svn-id: http://svn.miranda-ng.org/main/trunk@14358 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Steam/src/request_queue.cpp | 5 +-- protocols/Steam/src/stdafx.h | 1 + protocols/Steam/src/steam_contacts.cpp | 16 ++++---- protocols/Steam/src/steam_login.cpp | 2 +- protocols/Steam/src/steam_messages.cpp | 75 ++++++++++++++++++---------------- protocols/Steam/src/steam_pooling.cpp | 4 +- protocols/Steam/src/steam_proto.cpp | 17 +------- protocols/Steam/src/steam_proto.h | 30 +------------- protocols/Steam/src/steam_request.cpp | 15 ++++--- 9 files changed, 66 insertions(+), 99 deletions(-) diff --git a/protocols/Steam/src/request_queue.cpp b/protocols/Steam/src/request_queue.cpp index 4e343a5118..c419ffbd26 100644 --- a/protocols/Steam/src/request_queue.cpp +++ b/protocols/Steam/src/request_queue.cpp @@ -78,16 +78,15 @@ void RequestQueue::Execute(RequestQueueItem *item) CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)response); if (item->finallyCallback != NULL) item->finallyCallback(item->arg); - requests.remove(item); delete item; } unsigned int RequestQueue::AsyncSendThread(void *owner, void *arg) { - RequestQueue *that = (RequestQueue*)owner; + RequestQueue *queue = (RequestQueue*)owner; RequestQueueItem *item = (RequestQueueItem*)arg; - that->Execute(item); + queue->Execute(item); return 0; } diff --git a/protocols/Steam/src/stdafx.h b/protocols/Steam/src/stdafx.h index 7aecea533b..e0a3b694a6 100644 --- a/protocols/Steam/src/stdafx.h +++ b/protocols/Steam/src/stdafx.h @@ -29,6 +29,7 @@ #include #include #include +#include #include #include diff --git a/protocols/Steam/src/steam_contacts.cpp b/protocols/Steam/src/steam_contacts.cpp index 4c87e79575..117ae8bbe4 100644 --- a/protocols/Steam/src/steam_contacts.cpp +++ b/protocols/Steam/src/steam_contacts.cpp @@ -524,7 +524,7 @@ void CSteamProto::OnGotAvatar(const NETLIBHTTPREQUEST *response, void *arg) ai.hContact = (MCONTACT)arg; GetDbAvatarInfo(ai); - if (response == NULL || response->resultCode != HTTP_STATUS_OK) + if (response == NULL || response->resultCode != HTTP_CODE_OK) { ptrA steamId(getStringA(ai.hContact, "SteamID")); debugLogA("CSteamProto::OnGotAvatar: failed to get avatar %s", steamId); @@ -551,7 +551,7 @@ void CSteamProto::OnFriendAdded(const NETLIBHTTPREQUEST *response, void *arg) { SendAuthParam *param = (SendAuthParam*)arg; - if (response == NULL || response->resultCode != HTTP_STATUS_OK || lstrcmpiA(response->pData, "true")) + if (response == NULL || response->resultCode != HTTP_CODE_OK || lstrcmpiA(response->pData, "true")) { ptrA steamId(getStringA(param->hContact, "SteamID")); debugLogA("CSteamProto::OnFriendAdded: failed to add friend %s", steamId); @@ -570,7 +570,7 @@ void CSteamProto::OnFriendAdded(const NETLIBHTTPREQUEST *response, void *arg) void CSteamProto::OnFriendBlocked(const NETLIBHTTPREQUEST *response, void *arg) { - if (response == NULL || response->resultCode != HTTP_STATUS_OK || lstrcmpiA(response->pData, "true")) + if (response == NULL || response->resultCode != HTTP_CODE_OK || lstrcmpiA(response->pData, "true")) { debugLogA("CSteamProto::OnFriendIgnored: failed to ignore friend %s", (char*)arg); return; @@ -579,7 +579,7 @@ void CSteamProto::OnFriendBlocked(const NETLIBHTTPREQUEST *response, void *arg) void CSteamProto::OnFriendRemoved(const NETLIBHTTPREQUEST *response, void *arg) { - if (response == NULL || response->resultCode != HTTP_STATUS_OK || lstrcmpiA(response->pData, "true")) + if (response == NULL || response->resultCode != HTTP_CODE_OK || lstrcmpiA(response->pData, "true")) { MCONTACT hContact = (MCONTACT)arg; ptrA who(getStringA(hContact, "SteamID")); @@ -591,7 +591,7 @@ void CSteamProto::OnFriendRemoved(const NETLIBHTTPREQUEST *response, void *arg) void CSteamProto::OnAuthRequested(const NETLIBHTTPREQUEST *response, void *arg) { - if (response == NULL || response->resultCode != HTTP_STATUS_OK) + if (response == NULL || response->resultCode != HTTP_CODE_OK) { debugLogA("CSteamProto::OnAuthRequested: failed to request info for %s", (char*)arg); return; @@ -655,7 +655,7 @@ void CSteamProto::OnAuthRequested(const NETLIBHTTPREQUEST *response, void *arg) void CSteamProto::OnPendingApproved(const NETLIBHTTPREQUEST *response, void *arg) { - if (response == NULL || response->resultCode != HTTP_STATUS_OK) + if (response == NULL || response->resultCode != HTTP_CODE_OK) { debugLogA("CSteamProto::OnPendingApproved: failed to approve pending from %s", (char*)arg); return; @@ -675,7 +675,7 @@ void CSteamProto::OnPendingApproved(const NETLIBHTTPREQUEST *response, void *arg void CSteamProto::OnPendingIgnoreded(const NETLIBHTTPREQUEST *response, void *arg) { - if (response == NULL || response->resultCode != HTTP_STATUS_OK) + if (response == NULL || response->resultCode != HTTP_CODE_OK) { debugLogA("CSteamProto::OnPendingApproved: failed to ignore pending from %s", (char*)arg); return; @@ -695,7 +695,7 @@ void CSteamProto::OnPendingIgnoreded(const NETLIBHTTPREQUEST *response, void *ar void CSteamProto::OnSearchByIdEnded(const NETLIBHTTPREQUEST *response, void *arg) { - if (response == NULL || response->resultCode != HTTP_STATUS_OK) + if (response == NULL || response->resultCode != HTTP_CODE_OK) { ProtoBroadcastAck(NULL, ACKTYPE_SEARCH, ACKRESULT_FAILED, (HANDLE)STEAM_SEARCH_BYID, 0); debugLogA("CSteamProto::OnSearchByIdEnded: failed to get summaries for %s", (char*)arg); diff --git a/protocols/Steam/src/steam_login.cpp b/protocols/Steam/src/steam_login.cpp index 6128428dbe..e52455a4d5 100644 --- a/protocols/Steam/src/steam_login.cpp +++ b/protocols/Steam/src/steam_login.cpp @@ -271,7 +271,7 @@ void CSteamProto::OnLoggedOn(const NETLIBHTTPREQUEST *response) JSONNode *node = json_get(root, "error"); ptrT error(json_as_string(node)); - if (mir_tstrcmpi(error, _T("OK")) || response->resultCode == HTTP_STATUS_UNAUTHORIZED) + if (mir_tstrcmpi(error, _T("OK")) || response->resultCode == HTTP_CODE_UNAUTHORIZED) { // Probably expired TokenSecret HandleTokenExpired(); diff --git a/protocols/Steam/src/steam_messages.cpp b/protocols/Steam/src/steam_messages.cpp index 563923c919..fc49c7b0e8 100644 --- a/protocols/Steam/src/steam_messages.cpp +++ b/protocols/Steam/src/steam_messages.cpp @@ -1,17 +1,38 @@ #include "stdafx.h" -//void CSteamProto::SendTypingThread(void *arg) -//{ -// MCONTACT hContact = (MCONTACT)arg; -// -// ptrA token(getStringA("TokenSecret")); -// ptrA umqId(getStringA("UMQID")); -// ptrA steamId(getStringA(hContact, "SteamID")); -// -// MessageApi::SendResult sendResult; -// debugLogA("CSteamProto::SendTypingThread: call PollApi::MessageApi::SendMessage"); -// MessageApi::SendTyping(m_hNetlibUser, token, umqId, steamId, &sendResult); -//} +struct SendMessageParam +{ + MCONTACT hContact; + HANDLE hMessage; + char *message; +}; + +void MessageParamFree(void *arg) +{ + SendMessageParam *param = (SendMessageParam*)arg; + mir_free(param->message); + mir_free(param); +} + +int CSteamProto::OnSendMessage(MCONTACT hContact, const char* message) +{ + UINT hMessage = InterlockedIncrement(&hMessageProcess); + + SendMessageParam *param = (SendMessageParam*)mir_calloc(sizeof(SendMessageParam)); + param->hContact = hContact; + param->hMessage = (HANDLE)hMessage; + param->message = mir_strdup(message); + + ptrA token(getStringA("TokenSecret")); + ptrA umqid(getStringA("UMQID")); + ptrA steamId(getStringA(hContact, "SteamID")); + PushRequest( + new SendMessageRequest(token, umqid, steamId, message), + &CSteamProto::OnMessageSent, + param, MessageParamFree); + + return hMessage; +} void CSteamProto::OnMessageSent(const NETLIBHTTPREQUEST *response, void *arg) { @@ -20,7 +41,7 @@ void CSteamProto::OnMessageSent(const NETLIBHTTPREQUEST *response, void *arg) ptrT error(mir_tstrdup(TranslateT("Unknown error"))); ptrT steamId(getTStringA(param->hContact, "SteamID")); - if (response != NULL && response->resultCode == HTTP_STATUS_OK) + if (response != NULL && response->resultCode == HTTP_CODE_OK) { JSONROOT root(response->pData); JSONNode *node = json_get(root, "error"); @@ -28,29 +49,13 @@ void CSteamProto::OnMessageSent(const NETLIBHTTPREQUEST *response, void *arg) error = json_as_string(node); } - int status = ACKRESULT_FAILED; - - if (!mir_tstrcmpi(error, _T("OK"))) + if (mir_tstrcmpi(error, _T("OK")) != 0) { - status = ACKRESULT_SUCCESS; - error = NULL; + ptrA errorA(mir_t2a(error)); + debugLogA("CSteamProto::OnMessageSent: failed to send message for %s (%s)", steamId, errorA); + ProtoBroadcastAck(param->hContact, ACKTYPE_MESSAGE, ACKRESULT_FAILED, param->hMessage, (LPARAM)errorA); + return; } - else - debugLog(_T("CSteamProto::OnMessageSent: failed to send message for %s (%s)"), steamId, error); - - ptrA errorA(mir_t2a(error)); - - ProtoBroadcastAck( - param->hContact, - ACKTYPE_MESSAGE, - status, - param->hMessage, - (LPARAM) errorA); -} -void CSteamProto::MessageParamFree(void *arg) -{ - SendMessageParam *param = (SendMessageParam*)arg; - mir_free(param->message); - mir_free(param); + ProtoBroadcastAck(param->hContact, ACKTYPE_MESSAGE, ACKRESULT_SUCCESS, param->hMessage, 0); } \ No newline at end of file diff --git a/protocols/Steam/src/steam_pooling.cpp b/protocols/Steam/src/steam_pooling.cpp index 71d1b20f0e..1233c9a7a0 100644 --- a/protocols/Steam/src/steam_pooling.cpp +++ b/protocols/Steam/src/steam_pooling.cpp @@ -180,7 +180,7 @@ void CSteamProto::PollingThread(void*) NETLIBHTTPREQUEST *response = request->Send(m_hNetlibUser); delete request; - if (response == NULL || response->resultCode != HTTP_STATUS_OK) + if (response == NULL || response->resultCode != HTTP_CODE_OK) { if (response != NULL) CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)response); @@ -233,7 +233,7 @@ void CSteamProto::PollingThread(void*) debugLog(_T("CSteamProto::PollingThread: %s (%d)"), error, response->resultCode); // token has expired - if (response->resultCode == HTTP_STATUS_UNAUTHORIZED) + if (response->resultCode == HTTP_CODE_UNAUTHORIZED) delSetting("TokenSecret"); // too low timeout? diff --git a/protocols/Steam/src/steam_proto.cpp b/protocols/Steam/src/steam_proto.cpp index c2e342e53f..2a626f5020 100644 --- a/protocols/Steam/src/steam_proto.cpp +++ b/protocols/Steam/src/steam_proto.cpp @@ -254,22 +254,7 @@ int CSteamProto::SendMsg(MCONTACT hContact, int, const char *message) return 0; } - UINT hMessage = InterlockedIncrement(&hMessageProcess); - - SendMessageParam *param = (SendMessageParam*)mir_calloc(sizeof(SendMessageParam)); - param->hContact = hContact; - param->hMessage = (HANDLE)hMessage; - param->message = mir_strdup(message); - - ptrA token(getStringA("TokenSecret")); - ptrA umqid(getStringA("UMQID")); - ptrA steamId(getStringA(hContact, "SteamID")); - PushRequest( - new SendMessageRequest(token, umqid, steamId, message), - &CSteamProto::OnMessageSent, - param, MessageParamFree); - - return hMessage; + return OnSendMessage(hContact, message); } int CSteamProto::SetStatus(int new_status) diff --git a/protocols/Steam/src/steam_proto.h b/protocols/Steam/src/steam_proto.h index 4b4dcaa40a..eed74c5c42 100644 --- a/protocols/Steam/src/steam_proto.h +++ b/protocols/Steam/src/steam_proto.h @@ -5,25 +5,12 @@ #define STEAM_SEARCH_BYNAME 1002 #define STEAM_TYPING_TIME 10 -struct PasswordParam -{ - char password[513]; - char timestamp[16]; -}; - struct SendAuthParam { MCONTACT hContact; HANDLE hAuth; }; -struct SendMessageParam -{ - MCONTACT hContact; - HANDLE hMessage; - char *message; -}; - struct STEAM_SEARCH_RESULT { PROTOSEARCHRESULT hdr; @@ -41,21 +28,6 @@ enum CMI_MAX // this item shall be the last one }; -enum HTTP_STATUS -{ - HTTP_STATUS_NONE = 0, - HTTP_STATUS_OK = 200, - HTTP_STATUS_FOUND = 302, - HTTP_STATUS_BAD_REQUEST = 400, - HTTP_STATUS_UNAUTHORIZED = 401, - HTTP_STATUS_FORBIDDEN = 403, - HTTP_STATUS_NOT_FOUND = 404, - HTTP_STATUS_METHOD_NOT_ALLOWED = 405, - HTTP_STATUS_TOO_MANY_REQUESTS = 429, - HTTP_STATUS_SERVICE_UNAVAILABLE = 503, - HTTP_STATUS_INSUFICIENTE_STORAGE = 507 -}; - typedef void(CSteamProto::*SteamResponseCallback)(const NETLIBHTTPREQUEST *response); typedef void(CSteamProto::*SteamResponseWithArgCallback)(const NETLIBHTTPREQUEST *response, void *arg); @@ -183,8 +155,8 @@ protected: void OnSearchByNameFinished(const NETLIBHTTPREQUEST *response, void *arg); // messages + int OnSendMessage(MCONTACT hContact, const char* message); void OnMessageSent(const NETLIBHTTPREQUEST *response, void *arg); - static void MessageParamFree(void *arg); // menus HGENMENU m_hMenuRoot; diff --git a/protocols/Steam/src/steam_request.cpp b/protocols/Steam/src/steam_request.cpp index 05a7b235b1..c480628151 100644 --- a/protocols/Steam/src/steam_request.cpp +++ b/protocols/Steam/src/steam_request.cpp @@ -35,6 +35,11 @@ static void SteamHttpResponse(const NETLIBHTTPREQUEST *response, void *arg) { SteamResponseDelegate *delegate = (SteamResponseDelegate*)arg; delegate->Invoke(response); +} + +void SteamResponseDelegateFree(void *arg) +{ + SteamResponseDelegate *delegate = (SteamResponseDelegate*)arg; delete delegate; } @@ -46,28 +51,28 @@ void CSteamProto::PushRequest(HttpRequest *request) void CSteamProto::PushRequest(HttpRequest *request, SteamResponseCallback response) { SteamResponseDelegate *delegate = new SteamResponseDelegate(this, response); - requestQueue->Push(request, SteamHttpResponse, delegate); + requestQueue->Push(request, SteamHttpResponse, delegate, SteamResponseDelegateFree); } void CSteamProto::PushRequest(HttpRequest *request, SteamResponseWithArgCallback response, void *arg, HttpFinallyCallback last) { SteamResponseDelegate *delegate = new SteamResponseDelegate(this, response, arg, last); - requestQueue->Push(request, SteamHttpResponse, delegate); + requestQueue->Push(request, SteamHttpResponse, delegate, SteamResponseDelegateFree); } void CSteamProto::SendRequest(HttpRequest *request) { - requestQueue->Send(request, NULL, NULL); + requestQueue->Send(request); } void CSteamProto::SendRequest(HttpRequest *request, SteamResponseCallback response) { SteamResponseDelegate *delegate = new SteamResponseDelegate(this, response); - requestQueue->Send(request, SteamHttpResponse, delegate); + requestQueue->Send(request, SteamHttpResponse, delegate, SteamResponseDelegateFree); } void CSteamProto::SendRequest(HttpRequest *request, SteamResponseWithArgCallback response, void *arg, HttpFinallyCallback last) { SteamResponseDelegate *delegate = new SteamResponseDelegate(this, response, arg, last); - requestQueue->Send(request, SteamHttpResponse, delegate); + requestQueue->Send(request, SteamHttpResponse, delegate, SteamResponseDelegateFree); } -- cgit v1.2.3