diff options
author | George Hazan <george.hazan@gmail.com> | 2024-12-15 22:46:14 +0300 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2024-12-15 22:46:14 +0300 |
commit | 83e4efbbf5f9aca0a46e2687318eb3c9086eb491 (patch) | |
tree | e8eb719fe2a6d1003d966c9f5bec45dba40d085e /protocols/Steam/src | |
parent | 41dd36073f850e180d23924b3a6f7749ccd17e4a (diff) |
old requests mechanism removed
Diffstat (limited to 'protocols/Steam/src')
-rw-r--r-- | protocols/Steam/src/main.cpp | 103 | ||||
-rw-r--r-- | protocols/Steam/src/steam_proto.cpp | 8 | ||||
-rw-r--r-- | protocols/Steam/src/steam_proto.h | 7 | ||||
-rw-r--r-- | protocols/Steam/src/steam_ws.cpp | 15 |
4 files changed, 107 insertions, 26 deletions
diff --git a/protocols/Steam/src/main.cpp b/protocols/Steam/src/main.cpp index a39ce0aef5..d39201d870 100644 --- a/protocols/Steam/src/main.cpp +++ b/protocols/Steam/src/main.cpp @@ -34,6 +34,109 @@ extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = { MIID_PROTOC void CMPlugin::InitSteamServices()
{
+ // message handlers
+ messages[EMsg::Multi] = &cmsg_multi__descriptor;
+ messages[EMsg::ClientHeartBeat] = &cmsg_client_heart_beat__descriptor;
+ messages[EMsg::ClientHello] = &cmsg_client_hello__descriptor;
+ messages[EMsg::ClientLogon] = &cmsg_client_logon__descriptor;
+ messages[EMsg::ClientLogOnResponse] = &cmsg_client_logon_response__descriptor;
+ messages[EMsg::ClientLogOff] = &cmsg_client_log_off__descriptor;
+ messages[EMsg::ClientLoggedOff] = &cmsg_client_logged_off__descriptor;
+ // messages[EMsg::ClientUpdateMachineAuth] = &cmsg_Client__UpdateMachineAuth;
+ // messages[EMsg::ClientUpdateMachineAuthResponse] = &cmsg_Client_UpdateMachineAuthResponse;
+ messages[EMsg::ClientNewLoginKey] = &cmsg_client_new_login_key__descriptor;
+ messages[EMsg::ClientNewLoginKeyAccepted] = &cmsg_client_new_login_key_accepted__descriptor;
+ messages[EMsg::ClientRequestWebAPIAuthenticateUserNonceResponse] = &cmsg_client_request_web_apiauthenticate_user_nonce_response__descriptor;
+ // messages[EMsg::ClientCMList] = &cmsg_Client__CMList;
+ // messages[EMsg::ClientItemAnnouncements] = &cmsg_Client__ItemAnnouncements;
+ // messages[EMsg::ClientRequestItemAnnouncements] = &cmsg_Client_RequestItemAnnouncements;
+ // messages[EMsg::ClientCommentNotifications] = &cmsg_Client_CommentNotifications;
+ // messages[EMsg::ClientRequestCommentNotifications] = &cmsg_Client_RequestCommentNotifications;
+ // messages[EMsg::ClientUserNotifications] = &cmsg_Client_UserNotifications;
+ // messages[EMsg::ClientFSOfflineMessageNotification] = &cmsg_Client__OfflineMessageNotification;
+ // messages[EMsg::ClientFSRequestOfflineMessageCount] = &cmsg_Client_RequestOfflineMessageCount;
+ // messages[EMsg::ClientGamesPlayed] = &cmsg_Client__GamesPlayed;
+ // messages[EMsg::ClientGamesPlayedWithDataBlob] = &cmsg_Client_GamesPlayed;
+ messages[EMsg::ClientAccountInfo] = &cmsg_client_account_info__descriptor;
+ // messages[EMsg::ClientEmailAddrInfo] = &cmsg_Client__EmailAddrInfo;
+ // messages[EMsg::ClientIsLimitedAccount] = &cmsg_Client__IsLimitedAccount;
+ // messages[EMsg::ClientWalletInfoUpdate] = &cmsg_Client__WalletInfoUpdate;
+ // messages[EMsg::ClientLicenseList] = &cmsg_Client__LicenseList;
+ // messages[EMsg::ClientServiceMethodLegacy] = &cmsg_Client_ServiceMethodLegacy;
+ // messages[EMsg::ClientServiceMethodLegacyResponse] = &cmsg_Client_ServiceMethodLegacyResponse;
+ // messages[EMsg::ClientGMSServerQuery] = &cmsg_Client_GMSServerQuery;
+ // messages[EMsg::GMSClientServerQueryResponse] = &cmsg_GMSClientServerQueryResponse;
+ // messages[EMsg::ClientPICSChangesSinceResponse] = &cmsg_Client_PICSChangesSinceResponse;
+ // messages[EMsg::ClientPICSProductInfoResponse] = &cmsg_Client_PICSProductInfoResponse;
+ // messages[EMsg::ClientPICSAccessTokenResponse] = &cmsg_Client_PICSAccessTokenResponse;
+ // messages[EMsg::EconTrading_InitiateTradeResponse] = &cmsg_Trading_InitiateTradeResponse;
+ // messages[EMsg::EconTrading_InitiateTradeResult] = &cmsg_Trading_InitiateTradeResponse;
+ // messages[EMsg::EconTrading_StartSession] = &cmsg_Trading_StartSession;
+ messages[EMsg::ClientChangeStatus] = &cmsg_client_change_status__descriptor;
+ messages[EMsg::ClientAddFriendResponse] = &cmsg_client_add_friend_response__descriptor;
+ messages[EMsg::ClientRemoveFriend] = &cmsg_client_remove_friend__descriptor;
+ // messages[EMsg::ClientFSGetFriendsSteamLevels] = &cmsg_Client_FSGetFriendsSteamLevels;
+ // messages[EMsg::ClientFSGetFriendsSteamLevelsResponse] = &cmsg_Client_FSGetFriendsSteamLevelsResponse;
+ messages[EMsg::ClientPersonaState] = &cmsg_client_persona_state__descriptor;
+ // messages[EMsg::ClientClanState] = &cmsg_Client_ClanState;
+ messages[EMsg::ClientFriendsList] = &cmsg_client_friends_list__descriptor;
+ messages[EMsg::ClientRequestFriendData] = &cmsg_client_request_friend_data__descriptor;
+ messages[EMsg::ClientFriendMsg] = &cmsg_client_friend_msg__descriptor;
+ // messages[EMsg::ClientChatInvite] = &cmsg_Client_ChatInvite;
+ messages[EMsg::ClientFriendMsgIncoming] = &cmsg_client_friend_msg_incoming__descriptor;
+ messages[EMsg::ClientFriendMsgEchoToSender] = &cmsg_client_friend_msg_incoming__descriptor;
+ // messages[EMsg::ClientFSGetFriendMessageHistory] = &cmsg_Client_ChatGetFriendMessageHistory;
+ // messages[EMsg::ClientFSGetFriendMessageHistoryResponse] = &cmsg_Client_ChatGetFriendMessageHistoryResponse;
+ messages[EMsg::ClientFriendsGroupsList] = &cmsg_client_friends_groups_list__descriptor;
+ messages[EMsg::AMClientCreateFriendsGroup] = &cmsg_client_create_friends_group__descriptor;
+ messages[EMsg::AMClientCreateFriendsGroupResponse] = &cmsg_client_create_friends_group_response__descriptor;
+ messages[EMsg::AMClientDeleteFriendsGroup] = &cmsg_client_delete_friends_group__descriptor;
+ messages[EMsg::AMClientDeleteFriendsGroupResponse] = &cmsg_client_delete_friends_group_response__descriptor;
+ messages[EMsg::AMClientRenameFriendsGroup] = &cmsg_client_manage_friends_group__descriptor;
+ messages[EMsg::AMClientRenameFriendsGroupResponse] = &cmsg_client_manage_friends_group_response__descriptor;
+ messages[EMsg::AMClientAddFriendToGroup] = &cmsg_client_add_friend_to_group__descriptor;
+ messages[EMsg::AMClientAddFriendToGroupResponse] = &cmsg_client_add_friend_to_group_response__descriptor;
+ messages[EMsg::AMClientRemoveFriendFromGroup] = &cmsg_client_remove_friend_from_group__descriptor;
+ messages[EMsg::AMClientRemoveFriendFromGroupResponse] = &cmsg_client_remove_friend_from_group_response__descriptor;
+ messages[EMsg::ClientPlayerNicknameList] = &cmsg_client_player_nickname_list__descriptor;
+ messages[EMsg::AMClientSetPlayerNickname] = &cmsg_client_set_player_nickname__descriptor;
+ messages[EMsg::AMClientSetPlayerNicknameResponse] = &cmsg_client_set_player_nickname_response__descriptor;
+ // messages[EMsg::ClientRegisterKey] = &cmsg_Client_RegisterKey;
+ // messages[EMsg::ClientPurchaseResponse] = &cmsg_Client_PurchaseResponse;
+ // messages[EMsg::ClientRequestFreeLicense] = &cmsg_Client_RequestFreeLicense;
+ // messages[EMsg::ClientRequestFreeLicenseResponse] = &cmsg_Client_RequestFreeLicenseResponse;
+ // messages[EMsg::ClientGetNumberOfCurrentPlayersDP] = &cmsg_DPGetNumberOfCurrentPlayers;
+ // messages[EMsg::ClientGetNumberOfCurrentPlayersDPResponse] = &cmsg_DPGetNumberOfCurrentPlayersResponse;
+ // messages[EMsg::ClientGetAppOwnershipTicket] = &cmsg_Client_GetAppOwnershipTicket;
+ // messages[EMsg::ClientGetAppOwnershipTicketResponse] = &cmsg_Client_GetAppOwnershipTicketResponse;
+ // messages[EMsg::ClientGameConnectTokens] = &cmsg_Client_GameConnectTokens;
+ // messages[EMsg::ClientAuthList] = &cmsg_Client_AuthList;
+ // messages[EMsg::ClientAuthListAck] = &cmsg_Client_AuthListAck;
+ // messages[EMsg::ClientTicketAuthComplete] = &cmsg_Client_TicketAuthComplete;
+ // messages[EMsg::ClientRequestEncryptedAppTicket] = &cmsg_Client_RequestEncryptedAppTicket;
+ // messages[EMsg::ClientRequestEncryptedAppTicketResponse] = &cmsg_Client_RequestEncryptedAppTicketResponse;
+ // messages[EMsg::ClientCurrentUIMode] = &cmsg_Client_UIMode;
+ // messages[EMsg::ClientVanityURLChangedNotification] = &cmsg_Client_VanityURLChangedNotification;
+ // messages[EMsg::ClientAMGetPersonaNameHistory] = &cmsg_Client_AMGetPersonaNameHistory;
+ // messages[EMsg::ClientAMGetPersonaNameHistoryResponse] = &cmsg_Client_AMGetPersonaNameHistoryResponse;
+ // messages[EMsg::ClientGetCDNAuthToken] = &cmsg_Client_GetCDNAuthToken;
+ // messages[EMsg::ClientGetCDNAuthTokenResponse] = &cmsg_Client_GetCDNAuthTokenResponse;
+ // messages[EMsg::ClientKickPlayingSession] = &cmsg_Client_KickPlayingSession;
+ // messages[EMsg::ClientPlayingSessionState] = &cmsg_Client_PlayingSessionState;
+ // messages[EMsg::ClientToGC] = &cmsg_GCClient;
+ // messages[EMsg::ClientFromGC] = &cmsg_GCClient;
+ // messages[EMsg::ClientRichPresenceUpload] = &cmsg_Client_RichPresenceUpload;
+ // messages[EMsg::ClientRichPresenceRequest] = &cmsg_Client_RichPresenceRequest;
+ // messages[EMsg::ClientRichPresenceInfo] = &cmsg_Client_RichPresenceInfo;
+ messages[EMsg::ClientGetEmoticonList] = &cmsg_client_get_emoticon_list__descriptor;
+ messages[EMsg::ClientEmoticonList] = &cmsg_client_emoticon_list__descriptor;
+ // messages[EMsg::ClientGetAuthorizedDevicesResponse] = &cmsg_Client_GetAuthorizedDevices;
+ // messages[EMsg::ClientAuthorizeLocalDeviceRequest] = &cmsg_Client_AuthorizeLocalDeviceRequest;
+ // messages[EMsg::ClientAuthorizeLocalDeviceResponse] = &cmsg_Client_AuthorizeLocalDevice;
+ // messages[EMsg::ClientDeauthorizeDeviceRequest] = &cmsg_Client_DeauthorizeDeviceRequest;
+ // messages[EMsg::ClientDeauthorizeDevice] = &cmsg_Client_DeauthorizeDevice;
+ // messages[EMsg::ClientUseLocalDeviceAuthorizations] = &cmsg_Client_UseLocalDeviceAuthorizations;
+
// services from steammessages_auth.steamclient.proto
services["Authentication"] = &authentication__descriptor;
services["AuthenticationSupport"] = &authentication_support__descriptor;
diff --git a/protocols/Steam/src/steam_proto.cpp b/protocols/Steam/src/steam_proto.cpp index 14d79c8beb..9a34e24c4f 100644 --- a/protocols/Steam/src/steam_proto.cpp +++ b/protocols/Steam/src/steam_proto.cpp @@ -1,16 +1,8 @@ #include "stdafx.h"
-static int CompareRequests(const ProtoRequest *p1, const ProtoRequest *p2)
-{
- if (p1->id == p2->id)
- return 0;
- return (p1->id < p2->id) ? -1 : 1;
-}
-
CSteamProto::CSteamProto(const char *protoName, const wchar_t *userName) :
PROTO<CSteamProto>(protoName, userName),
m_impl(*this),
- m_arRequests(10, CompareRequests),
m_arOwnMessages(1, NumericKeySortT),
m_wszGroupName(this, "DefaultGroup", L"Steam"),
m_wszDeviceName(this, "DeviceName", L"Miranda NG")
diff --git a/protocols/Steam/src/steam_proto.h b/protocols/Steam/src/steam_proto.h index bf25a6fcc3..57f87b6b77 100644 --- a/protocols/Steam/src/steam_proto.h +++ b/protocols/Steam/src/steam_proto.h @@ -134,9 +134,6 @@ class CSteamProto : public PROTO<CSteamProto> void __cdecl ServerThread(void *);
bool ServerThreadStub(const char *szHost);
- mir_cs m_csRequests;
- OBJLIST<ProtoRequest> m_arRequests;
-
void ProcessMulti(const uint8_t *buf, size_t cbLen);
void ProcessMessage(const uint8_t *buf, size_t cbLen);
void ProcessServiceResponse(const uint8_t *buf, size_t cbLen, const CMsgProtoBufHeader &hdr);
@@ -348,9 +345,11 @@ struct CMPlugin : public ACCPROTOPLUGIN<CSteamProto> void InitSteamServices();
- std::map<std::string, const ProtobufCServiceDescriptor*> services;
+ std::map<EMsg, const ProtobufCMessageDescriptor *> messages;
+ std::map<std::string, const ProtobufCServiceDescriptor *> services;
typedef void (CSteamProto:: *ServiceResponseHandler)(const ProtobufCMessage &msg, const CMsgProtoBufHeader &hdr);
+ std::map<EMsg, ServiceResponseHandler> messageHandlers;
std::map<std::string, ServiceResponseHandler> serviceHandlers;
int Load() override;
diff --git a/protocols/Steam/src/steam_ws.cpp b/protocols/Steam/src/steam_ws.cpp index 4071bd5d63..f7a1112add 100644 --- a/protocols/Steam/src/steam_ws.cpp +++ b/protocols/Steam/src/steam_ws.cpp @@ -154,20 +154,6 @@ void CSteamProto::ProcessMessage(const uint8_t *buf, size_t cbLen) if (hdr->has_client_sessionid) m_iSessionId = hdr->client_sessionid; - MsgCallback pCallback = 0; - { - mir_cslock lck(m_csRequests); - if (auto *pReq = m_arRequests.find((ProtoRequest *)&hdr->jobid_target)) { - pCallback = pReq->pCallback; - m_arRequests.remove(pReq); - } - } - - if (pCallback) { - (this->*pCallback)(buf, cbLen); - return; - } - // persistent callbacks switch (msgType) { case EMsg::ClientLogOnResponse: @@ -184,6 +170,7 @@ void CSteamProto::ProcessMessage(const uint8_t *buf, size_t cbLen) break; default: + debugLogA("Received message of type %d", msgType); Netlib_Dump(HNETLIBCONN(m_ws->getConn()), buf, cbLen, false, 0); } } |