diff options
Diffstat (limited to 'protocols/Steam/src/steam_server.cpp')
-rw-r--r-- | protocols/Steam/src/steam_server.cpp | 33 |
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; |