mirror of
https://bitbucket.org/theswgsource/src-1.2.git
synced 2026-10-03 18:12:58 -04:00
120 lines
3.2 KiB
C++
Executable File
120 lines
3.2 KiB
C++
Executable File
// ======================================================================
|
|
//
|
|
// TaskEnableCharacter.cpp
|
|
// copyright (c) 2001 Sony Online Entertainment
|
|
//
|
|
// ======================================================================
|
|
|
|
#include "FirstLoginServer.h"
|
|
#include "TaskEnableCharacter.h"
|
|
#include "CentralServerConnection.h"
|
|
|
|
#include "ClientConnection.h"
|
|
#include "LoginServer.h"
|
|
#include "DatabaseConnection.h"
|
|
#include "sharedDatabaseInterface/DbSession.h"
|
|
#include "sharedNetworkMessages/GenericValueTypeMessage.h"
|
|
|
|
// ======================================================================
|
|
|
|
TaskEnableCharacter::TaskEnableCharacter(StationId &stationId, const NetworkId &characterId, const std::string &whoRequested, bool enabled, uint32 clusterId) :
|
|
TaskRequest(),
|
|
m_stationId(stationId),
|
|
m_characterId(characterId),
|
|
m_whoRequested(whoRequested),
|
|
m_enabled(enabled),
|
|
m_clusterId(clusterId)
|
|
{
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
bool TaskEnableCharacter::process(DB::Session *session)
|
|
{
|
|
EnableCharacterQuery qry;
|
|
qry.station_id=static_cast<long>(m_stationId);
|
|
qry.character_id=m_characterId;
|
|
qry.enabled.setValue(m_enabled);
|
|
|
|
bool rval = session->exec(&qry);
|
|
|
|
qry.done();
|
|
m_result = qry.result.getValue();
|
|
return rval;
|
|
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
void TaskEnableCharacter::onComplete()
|
|
{
|
|
std::string message;
|
|
switch (m_result)
|
|
{
|
|
case 1:
|
|
if (m_enabled)
|
|
message = "Character enabled.";
|
|
else
|
|
message = "Character disabled.";
|
|
break;
|
|
|
|
case 2:
|
|
message = "Could not find Character";
|
|
break;
|
|
|
|
default:
|
|
message = "The database returned an unknown error code";
|
|
break;
|
|
}
|
|
|
|
GenericValueTypeMessage<std::pair<std::string, std::string> > reply("EnableCharacterReplyMessage",
|
|
std::make_pair(m_whoRequested, message));
|
|
LoginServer::getInstance().sendToCluster(m_clusterId, reply);
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
TaskEnableCharacter::EnableCharacterQuery::EnableCharacterQuery() :
|
|
Query(),
|
|
station_id(),
|
|
character_id(),
|
|
enabled()
|
|
{
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
void TaskEnableCharacter::EnableCharacterQuery::getSQL(std::string &sql)
|
|
{
|
|
sql = std::string("begin :result := ") + DatabaseConnection::getInstance().getSchemaQualifier() + "login.enable_disable_character(:station_id, :character_id, :enabled); end;";
|
|
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
bool TaskEnableCharacter::EnableCharacterQuery::bindParameters()
|
|
{
|
|
if (!bindParameter(result)) return false;
|
|
if (!bindParameter(station_id)) return false;
|
|
if (!bindParameter(character_id)) return false;
|
|
if (!bindParameter(enabled)) return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
bool TaskEnableCharacter::EnableCharacterQuery::bindColumns()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
DB::Query::QueryMode TaskEnableCharacter::EnableCharacterQuery::getExecutionMode() const
|
|
{
|
|
return MODE_PROCEXEC;
|
|
}
|
|
|
|
// ======================================================================
|