/* net6 - Library providing IPv4/IPv6 network access
* Copyright (C) 2005 Armin Burgmeier / 0x539 dev group
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include "error.hpp"
#include "user.hpp"
net6::user::user(unsigned int unique_id, connection_base* remote_conn):
id(unique_id), logged_in(false), conn(remote_conn),
connection_encrypted(false)
{
if(conn.get() != NULL)
{
conn->encryption_failed_event().connect(
sigc::mem_fun(*this, &user::on_encryption_failed)
);
}
}
void net6::user::login(const std::string& user_name)
{
name = user_name;
logged_in = true;
}
void net6::user::set_encrypted()
{
connection_encrypted = true;
signal_encrypted.emit();
}
bool net6::user::is_encrypted() const
{
return connection_encrypted;
}
net6::user::signal_encrypted_type net6::user::encrypted_event() const
{
return signal_encrypted;
}
net6::user::signal_encryption_failed_type
net6::user::encryption_failed_event() const
{
return signal_encryption_failed;
}
unsigned int net6::user::get_id() const
{
return id;
}
bool net6::user::is_logged_in() const
{
return logged_in;
}
const std::string& net6::user::get_name() const
{
return name;
}
net6::connection_base& net6::user::get_connection()
{
if(conn.get() == NULL)
throw not_connected_error("net6::user::get_connection");
return *conn.get();
}
const net6::connection_base& net6::user::get_connection() const
{
if(conn.get() == NULL)
throw not_connected_error("net6::user::get_connection");
return *conn.get();
}
void net6::user::send(const packet& pack) const
{
if(conn.get() == NULL)
throw not_connected_error("net6::user::send");
conn->send(pack);
}
void net6::user::request_encryption() const
{
if(conn.get() == NULL)
throw not_connected_error("net6::user::send");
// When we have a direct connection to a client, we are server.
conn->request_encryption(false);
}
void net6::user::set_enable_keepalives(bool enable) const
{
if(conn.get() == NULL)
throw not_connected_error("net6::user::set_enable_keepalives");
conn->set_enable_keepalives(enable);
}
void net6::user::on_encryption_failed()
{
signal_encryption_failed.emit();
}
syntax highlighted by Code2HTML, v. 0.9.1