relation/server/imserver/asynctaskmgr.h
aozhiwei 3b39d9ff80 1
2020-09-15 15:02:50 +08:00

49 lines
1.4 KiB
C++

#pragma once
namespace cs
{
class CMGuildCreate;
}
namespace ss
{
class MFIMMsgConext;
class SS_IM_PushUserOnlineState;
class SS_IM_RandomUsersResponse;
}
struct QueryUserStatusTask;
struct RecommandFriendTask;
struct CreateGuildTask;
struct AsyncTaskContext;
class Player;
class AsyncTaskMgr : public a8::Singleton<AsyncTaskMgr>
{
private:
AsyncTaskMgr() {};
friend class a8::Singleton<AsyncTaskMgr>;
public:
void Init();
void UnInit();
void CreateQueryUserStatusTask(Player* hum, std::vector<std::string>& account_ids);
void CreateRecommandFriendTask(Player* hum);
void CreateNewGuildTask(const ss::MFIMMsgConext& context, const cs::CMGuildCreate& msg);
void _SS_IM_PushUserOnlineState(f8::MsgHdr& hdr, const ss::SS_IM_PushUserOnlineState& msg);
void _SS_IM_RandomUsersResponse(f8::MsgHdr& hdr, const ss::SS_IM_RandomUsersResponse& msg);
private:
QueryUserStatusTask* GetQueryUserStatusTask(long long seqid);
void RemoveQueryUserStatusTask(long long seqid);
RecommandFriendTask* GetRecommandFriendTask(long long seqid);
void RemoveRecommandFriendTask(long long seqid);
void FillAsyncTaskContext(Player* hum, AsyncTaskContext* context, long long seqid);
private:
std::map<long long, QueryUserStatusTask*> query_user_status_tasks_;
std::map<long long, RecommandFriendTask*> recommand_friend_tasks_;
std::map<long long, CreateGuildTask*> create_guild_tasks_;
};