diff options
author | Robert Pösel <robyer@seznam.cz> | 2015-03-06 10:23:10 +0000 |
---|---|---|
committer | Robert Pösel <robyer@seznam.cz> | 2015-03-06 10:23:10 +0000 |
commit | 224d0671bfbfccb2883313183a51f86fdf967745 (patch) | |
tree | 5820558020988df3604f4783e1e8541560807fb5 /protocols/Steam/src/steam_proto.h | |
parent | 16316a39e4efcf00cb98fd078377a78ee9e267a8 (diff) |
Steam: Rework PushRequests and related methods (more improvements for commit r12325)
To properly free arguments and also requests and QueueItems itself and also do small other fixes
git-svn-id: http://svn.miranda-ng.org/main/trunk@12349 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/Steam/src/steam_proto.h')
-rw-r--r-- | protocols/Steam/src/steam_proto.h | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/protocols/Steam/src/steam_proto.h b/protocols/Steam/src/steam_proto.h index 705b2e080b..1ed62dff5c 100644 --- a/protocols/Steam/src/steam_proto.h +++ b/protocols/Steam/src/steam_proto.h @@ -62,12 +62,19 @@ enum HTTP_STATUS HTTP_STATUS_INSUFICIENTE_STORAGE = 507 }; +enum ARG_FREE_TYPE +{ + ARG_NO_FREE, + ARG_MIR_FREE +}; + typedef void (CSteamProto::*RESPONSE)(const NETLIBHTTPREQUEST *response, void *arg); struct QueueItem { SteamWebApi::HttpRequest *request; void *arg; + ARG_FREE_TYPE arg_free_type; RESPONSE responseCallback; //RESPONSE responseFailedCallback; @@ -80,7 +87,24 @@ struct QueueItem //QueueItem(SteamWebApi::HttpRequest *request, RESPONSE response, RESPONSE responseFailedCallback) : // request(request), arg(NULL), responseCallback(response), responseFailedCallback(responseFailedCallback) { } - ~QueueItem() { delete request; responseCallback = NULL; } + ~QueueItem() { + // Free request + delete request; + + // Free argument + switch (arg_free_type) + { + case ARG_NO_FREE: + break; + case ARG_MIR_FREE: + mir_free(arg); + default: + break; + } + + responseCallback = NULL; + //responseFailedCallback = NULL; + } }; class CSteamProto : public PROTO<CSteamProto> @@ -170,7 +194,7 @@ protected: void PushRequest(SteamWebApi::HttpRequest *request); void PushRequest(SteamWebApi::HttpRequest *request, RESPONSE response); - void PushRequest(SteamWebApi::HttpRequest *request, RESPONSE response, void *arg); + void PushRequest(SteamWebApi::HttpRequest *request, RESPONSE response, void *arg, ARG_FREE_TYPE arg_free_type); void ExecuteRequest(QueueItem *requestItem); |