本文整理汇总了C++中OutputMessage_ptr::putString方法的典型用法代码示例。如果您正苦于以下问题:C++ OutputMessage_ptr::putString方法的具体用法?C++ OutputMessage_ptr::putString怎么用?C++ OutputMessage_ptr::putString使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OutputMessage_ptr
的用法示例。
在下文中一共展示了OutputMessage_ptr::putString方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: adminCommandSendMail
void ProtocolAdmin::adminCommandSendMail(const std::string& xmlData)
{
OutputMessage_ptr output = OutputMessagePool::getInstance()->getOutputMessage(this, false);
if(!output)
return;
std::string name;
TRACK_MESSAGE(output);
if(Item* mailItem = Admin::createMail(xmlData, name))
{
if(IOLoginData::getInstance()->playerMail(NULL, name, mailItem))
{
addLogLine(LOGTYPE_EVENT, "sent mailbox to " + name);
output->put<char>(AP_MSG_COMMAND_OK);
}
else
{
addLogLine(LOGTYPE_EVENT, "failed sending mailbox to " + name);
output->put<char>(AP_MSG_COMMAND_FAILED);
output->putString("could not send the box");
}
}
else
{
addLogLine(LOGTYPE_EVENT, "failed parsing mailbox");
output->put<char>(AP_MSG_COMMAND_FAILED);
output->putString("could not parse the box");
}
OutputMessagePool::getInstance()->send(output);
}
示例2: disconnectClient
void ProtocolLogin::disconnectClient(uint8_t error, const char* message)
{
OutputMessage_ptr output = OutputMessagePool::getInstance()->getOutputMessage(this, false);
if(output)
{
TRACK_MESSAGE(output);
output->put<char>(error);
output->putString(message);
OutputMessagePool::getInstance()->send(output);
}
getConnection()->close();
}
示例3: adminCommandKickPlayer
void ProtocolAdmin::adminCommandKickPlayer(const std::string& param)
{
OutputMessage_ptr output = OutputMessagePool::getInstance()->getOutputMessage(this, false);
if(!output)
return;
TRACK_MESSAGE(output);
Player* player = NULL;
if(g_game.getPlayerByNameWildcard(param, player) == RET_NOERROR)
{
Scheduler::getInstance().addEvent(createSchedulerTask(SCHEDULER_MINTICKS, boost::bind(&Game::kickPlayer, &g_game, player->getID(), false)));
addLogLine(LOGTYPE_EVENT, "kicking player " + player->getName());
output->put<char>(AP_MSG_COMMAND_OK);
}
else
{
addLogLine(LOGTYPE_EVENT, "failed setting kick for player " + param);
output->put<char>(AP_MSG_COMMAND_FAILED);
output->putString("player is not online");
}
OutputMessagePool::getInstance()->send(output);
}
示例4: parsePacket
void ProtocolManager::parsePacket(NetworkMessage& msg)
{
if(g_game.getGameState() == GAMESTATE_SHUTDOWN)
{
getConnection()->close();
return;
}
uint8_t recvbyte = msg.get<char>();
OutputMessage_ptr output = getOutputBuffer();
if(!output)
return;
TRACK_MESSAGE(output);
switch(m_state)
{
case NO_LOGGED_IN:
{
if((time(NULL) - m_startTime) > 30000)
{
//login timeout
getConnection()->close();
addLogLine(LOGTYPE_WARNING, "Login timeout");
return;
}
if(m_loginTries > 3)
{
output->put<char>(MP_MSG_ERROR);
output->putString("Too many login attempts");
getConnection()->send(output);
getConnection()->close();
addLogLine(LOGTYPE_WARNING, "Too many login attempts");
return;
}
if(recvbyte != MP_MSG_LOGIN)
{
output->put<char>(MP_MSG_ERROR);
output->putString("You are not logged in");
getConnection()->send(output);
getConnection()->close();
addLogLine(LOGTYPE_WARNING, "Wrong command while not logged in");
return;
}
break;
}
case LOGGED_IN:
break;
default:
{
getConnection()->close();
addLogLine(LOGTYPE_ERROR, "No valid connection state");
return;
}
}
m_lastCommand = time(NULL);
switch(recvbyte)
{
case MP_MSG_LOGIN:
{
if(m_state == NO_LOGGED_IN)
{
std::string pass = msg.getString(), word = g_config.getString(ConfigManager::MANAGER_PASSWORD);
_encrypt(word, false);
if(pass == word)
{
if(!Manager::getInstance()->loginConnection(this))
{
output->put<char>(MP_MSG_FAILURE);
output->putString("Unknown connection");
getConnection()->send(output);
getConnection()->close();
addLogLine(LOGTYPE_ERROR, "Login failed due to unknown connection");
return;
}
else
{
m_state = LOGGED_IN;
output->put<char>(MP_MSG_USERS);
addLogLine(LOGTYPE_EVENT, "Logged in, sending users");
std::map<uint32_t, std::string> users;
for(AutoList<Player>::iterator it = Player::autoList.begin(); it != Player::autoList.end(); ++it)
{
if(!it->second->isRemoved())
users[it->first] = it->second->getName();
}
output->put<uint16_t>(users.size());
for(std::map<uint32_t, std::string>::iterator it = users.begin(); it != users.end(); ++it)
{
output->put<uint32_t>(it->first);
output->putString(it->second);
//.........这里部分代码省略.........
示例5: parsePacket
void ProtocolAdmin::parsePacket(NetworkMessage& msg)
{
if(g_game.getGameState() == GAMESTATE_SHUTDOWN)
{
getConnection()->close();
return;
}
uint8_t recvbyte = msg.get<char>();
OutputMessage_ptr output = OutputMessagePool::getInstance()->getOutputMessage(this, false);
if(!output)
return;
TRACK_MESSAGE(output);
switch(m_state)
{
case ENCRYPTION_NO_SET:
{
if(Admin::getInstance()->isEncypted())
{
if((time(NULL) - m_startTime) > 30000)
{
getConnection()->close();
addLogLine(LOGTYPE_EVENT, "encryption timeout");
return;
}
if(recvbyte != AP_MSG_ENCRYPTION && recvbyte != AP_MSG_KEY_EXCHANGE)
{
output->put<char>(AP_MSG_ERROR);
output->putString("encryption needed");
OutputMessagePool::getInstance()->send(output);
getConnection()->close();
addLogLine(LOGTYPE_EVENT, "wrong command while ENCRYPTION_NO_SET");
return;
}
}
else
m_state = NO_LOGGED_IN;
break;
}
case NO_LOGGED_IN:
{
if(g_config.getBool(ConfigManager::ADMIN_REQUIRE_LOGIN))
{
if((time(NULL) - m_startTime) > 30000)
{
//login timeout
getConnection()->close();
addLogLine(LOGTYPE_EVENT, "login timeout");
return;
}
if(m_loginTries > 3)
{
output->put<char>(AP_MSG_ERROR);
output->putString("too many login tries");
OutputMessagePool::getInstance()->send(output);
getConnection()->close();
addLogLine(LOGTYPE_EVENT, "too many login tries");
return;
}
if(recvbyte != AP_MSG_LOGIN)
{
output->put<char>(AP_MSG_ERROR);
output->putString("you are not logged in");
OutputMessagePool::getInstance()->send(output);
getConnection()->close();
addLogLine(LOGTYPE_EVENT, "wrong command while NO_LOGGED_IN");
return;
}
}
else
m_state = LOGGED_IN;
break;
}
case LOGGED_IN:
break;
default:
{
getConnection()->close();
addLogLine(LOGTYPE_EVENT, "no valid connection state!!!");
return;
}
}
m_lastCommand = time(NULL);
switch(recvbyte)
{
case AP_MSG_LOGIN:
{
//.........这里部分代码省略.........