시험 삼아 asio::strand 를 사용해 서버를 만들어 보고 있는데
strand::dispatch 함수 사용시 리턴값이 있을경우 어떻게 넘겨줘야 할까요?
GameRoom_ptr GameRoomManager::join_room(user_session_weakptr arg_user)
{
GameRoom_ptr ptr;
bool op = true;
GameRoom_ptr _roomptr;
m_strand.dispatch([&, arg_user]()
{
auto curiter = m_gameroom_map.begin();
while (curiter != m_gameroom_map.end())
{
if (curiter->second->user_count() < 10)
{
break;
}
}
if (curiter != m_gameroom_map.end())
{
_roomptr = curiter->second;
}
else
{
_roomptr = create_room();
}
if (_roomptr != NULL)
{
_roomptr->join(arg_user);
}
else
{
op = false;
}
});
if (op == false)
return NULL;
return _roomptr;
}
일딴은 접속자가 1명이라 문제가 생기지 않을꺼라 생각되고 여러명일 경우 리턴값에 null이 떨어지게 될꺼 같은데
이벤트 처리 방법으로 변경 해야 할까요????