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