summaryrefslogtreecommitdiff
path: root/protocols/Steam/src/steam_server.cpp
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2024-12-15 15:50:25 +0300
committerGeorge Hazan <george.hazan@gmail.com>2024-12-15 15:50:25 +0300
commit4bbe001b15dec9cacd882ee55fe54f85c56a147f (patch)
treef181de7f9180492ac67a4a724697aad48eb6edb7 /protocols/Steam/src/steam_server.cpp
parentd2c72c9bf3492fd40960c2f0935c9c675795d28a (diff)
Steam: service calls switched to static handlers
Diffstat (limited to 'protocols/Steam/src/steam_server.cpp')
-rw-r--r--protocols/Steam/src/steam_server.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/protocols/Steam/src/steam_server.cpp b/protocols/Steam/src/steam_server.cpp
index c2d9469207..c6e50bf891 100644
--- a/protocols/Steam/src/steam_server.cpp
+++ b/protocols/Steam/src/steam_server.cpp
@@ -17,6 +17,39 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdafx.h"
+void CSteamProto::SendFriendMessage(uint32_t msgId, int64_t steamId, const char *pszMessage)
+{
+ CMStringA szId(FORMAT, "%d", msgId);
+
+ CFriendMessagesSendMessageRequest request;
+ request.chat_entry_type = (int)EChatEntryType::ChatMsg; request.has_chat_entry_type = true;
+ request.client_message_id = szId.GetBuffer();
+ request.contains_bbcode = request.has_contains_bbcode = true;
+ request.steamid = steamId; request.has_steamid = true;
+ request.message = (char *)pszMessage;
+ WSSendService(FriendSendMessage, request);
+}
+
+void CSteamProto::OnMessageSent(const CFriendMessagesSendMessageResponse *pResponse)
+{
+ COwnMessage *pOwn;
+ {
+ mir_cslock lck(m_csOwnMessages);
+ pOwn = m_arOwnMessages.find((COwnMessage *)&pResponse->ordinal);
+ }
+
+ if (pOwn) {
+ uint32_t timestamp = (pResponse->has_server_timestamp) ? pResponse->server_timestamp : 0;
+ if (timestamp > getDword(pOwn->hContact, DB_KEY_LASTMSGTS))
+ setDword(pOwn->hContact, DB_KEY_LASTMSGTS, timestamp);
+
+ pOwn->timestamp = timestamp;
+ ProtoBroadcastAck(pOwn->hContact, ACKTYPE_MESSAGE, ACKRESULT_SUCCESS, (HANDLE)pOwn->iMessageId, 0);
+ }
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
+
void CSteamProto::SendHeartBeat()
{
CMsgClientHeartBeat packet;