1
This commit is contained in:
parent
48e1d01d6d
commit
3abbe22431
@ -36,27 +36,27 @@ void Player::UnInit()
|
||||
SaveToDB();
|
||||
timer_attacher.ClearTimerList();
|
||||
for (auto& pair : friend_hash_) {
|
||||
if (!list_empty(&pair.second.watch_node)) {
|
||||
if (!list_empty(&pair.second->watch_node)) {
|
||||
PlayerMgr::Instance()->UnWatchPlayer(pair.second);
|
||||
delete pair.second;
|
||||
}
|
||||
}
|
||||
friend_hash_.clear();
|
||||
}
|
||||
|
||||
void Player::Deserialize(const ss::MFUserDB& user_db)
|
||||
{
|
||||
for (auto& friend_db : user_db.friends()) {
|
||||
Friend friendobj;
|
||||
TypeConvert::Convert(friend_db.base_data(), friendobj.base_data);
|
||||
friendobj.crc32_code = a8::openssl::Crc32(
|
||||
(unsigned char*)myself.base_data.account_id.data(),
|
||||
myself.base_data.account_id.size()
|
||||
);;
|
||||
friend_hash_[friendobj.base_data.account_id] = friendobj;
|
||||
}
|
||||
for (auto& pair : friend_hash_) {
|
||||
pair.second.hum = this;
|
||||
INIT_LIST_HEAD(&pair.second.watch_node);
|
||||
PlayerMgr::Instance()->WatchPlayer(pair.second);
|
||||
Friend* friendobj = new Friend;
|
||||
TypeConvert::Convert(friend_db.base_data(), friendobj->base_data);
|
||||
friendobj->crc32_code = a8::openssl::Crc32
|
||||
(
|
||||
(unsigned char*)friendobj->base_data.account_id.data(),
|
||||
friendobj->base_data.account_id.size()
|
||||
);
|
||||
friendobj->hum = this;
|
||||
friend_hash_[friendobj->base_data.account_id] = friendobj;
|
||||
PlayerMgr::Instance()->WatchPlayer(friendobj);
|
||||
}
|
||||
}
|
||||
|
||||
@ -64,7 +64,7 @@ void Player::Serialize(ss::MFUserDB& user_db)
|
||||
{
|
||||
for (auto& pair : friend_hash_) {
|
||||
auto p = user_db.add_friends();
|
||||
TypeConvert::Convert(pair.second.base_data, *(p->mutable_base_data()));
|
||||
TypeConvert::Convert(pair.second->base_data, *(p->mutable_base_data()));
|
||||
}
|
||||
}
|
||||
|
||||
@ -438,8 +438,8 @@ void Player::FillFriendList(::google::protobuf::RepeatedPtrField< ::cs::MFUserIn
|
||||
}
|
||||
for (auto& pair : friend_hash_) {
|
||||
auto p = friend_list->Add();
|
||||
TypeConvert::Convert(pair.second.base_data, *(p->mutable_base_data()));
|
||||
TypeConvert::Convert(pair.second.temp_custom_data, *(p->mutable_temp_custom_data()));
|
||||
TypeConvert::Convert(pair.second->base_data, *(p->mutable_base_data()));
|
||||
TypeConvert::Convert(pair.second->temp_custom_data, *(p->mutable_temp_custom_data()));
|
||||
}
|
||||
}
|
||||
|
||||
@ -543,7 +543,7 @@ void Player::SaveToDB()
|
||||
Friend* Player::GetFriendById(const std::string& friend_id)
|
||||
{
|
||||
auto itr = friend_hash_.find(friend_id);
|
||||
return itr != friend_hash_.end() ? &itr->second : nullptr;
|
||||
return itr != friend_hash_.end() ? itr->second : nullptr;
|
||||
}
|
||||
|
||||
void Player::FillApplyList(const cs::MFPaging& paging, cs::SMFriendApplyList& respmsg)
|
||||
|
@ -121,7 +121,7 @@ private:
|
||||
timer_list* update_user_info_timer_ = nullptr;
|
||||
long long last_apply_idx_ = 0;
|
||||
|
||||
std::map<std::string, Friend> friend_hash_;
|
||||
std::map<std::string, Friend*> friend_hash_;
|
||||
std::map<long long, FriendApply*> apply_hash_;
|
||||
std::list<FriendApply> apply_list_;
|
||||
};
|
||||
|
@ -88,32 +88,32 @@ void PlayerMgr::_CMLogin(f8::MsgHdr& hdr, const cs::CMLogin& msg)
|
||||
AsyncLogin1(msg);
|
||||
}
|
||||
|
||||
void PlayerMgr::WatchPlayer(Friend& friend_data)
|
||||
void PlayerMgr::WatchPlayer(Friend* friend_data)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
if (!list_empty(&friend_data.watch_node)) {
|
||||
if (!list_empty(&friend_data->watch_node)) {
|
||||
abort();
|
||||
}
|
||||
#endif
|
||||
auto itr = watch_players_.find(friend_data.base_data.account_id);
|
||||
auto itr = watch_players_.find(friend_data->base_data.account_id);
|
||||
if (itr == watch_players_.end()) {
|
||||
watch_players_[friend_data.base_data.account_id] = list_head();
|
||||
itr = watch_players_.find(friend_data.base_data.account_id);
|
||||
watch_players_[friend_data->base_data.account_id] = list_head();
|
||||
itr = watch_players_.find(friend_data->base_data.account_id);
|
||||
if (itr == watch_players_.end()) {
|
||||
abort();
|
||||
}
|
||||
INIT_LIST_HEAD(&itr->second);
|
||||
}
|
||||
list_add(&friend_data.watch_node, &itr->second);
|
||||
list_add(&friend_data->watch_node, &itr->second);
|
||||
}
|
||||
|
||||
void PlayerMgr::UnWatchPlayer(Friend& friend_data)
|
||||
void PlayerMgr::UnWatchPlayer(Friend* friend_data)
|
||||
{
|
||||
if (!list_empty(&friend_data.watch_node)) {
|
||||
list_del_init(&friend_data.watch_node);
|
||||
if (!list_empty(&friend_data->watch_node)) {
|
||||
list_del_init(&friend_data->watch_node);
|
||||
}
|
||||
{
|
||||
auto itr = watch_players_.find(friend_data.base_data.account_id);
|
||||
auto itr = watch_players_.find(friend_data->base_data.account_id);
|
||||
if (itr != watch_players_.end()) {
|
||||
if (list_empty(&itr->second)) {
|
||||
watch_players_.erase(itr);
|
||||
|
@ -41,8 +41,8 @@ class PlayerMgr : public a8::Singleton<PlayerMgr>
|
||||
Player* GetPlayerByAccountId(const std::string& account_id);
|
||||
void ReBindSocket(int socket_handle, Player* hum);
|
||||
void OnWSProxyDisconnect(a8::XParams& param);
|
||||
void WatchPlayer(Friend& friend_data);
|
||||
void UnWatchPlayer(Friend& friend_data);
|
||||
void WatchPlayer(Friend* friend_data);
|
||||
void UnWatchPlayer(Friend* friend_data);
|
||||
int OnlineNum();
|
||||
|
||||
private:
|
||||
|
Loading…
x
Reference in New Issue
Block a user