Horizon Official Technical Documentation
Horizon::Interface::InterServerAPI< SessionType > Class Template Reference

#include <InterServerAPI.hpp>

Public Member Functions

 InterServerAPI ()
 
virtual ~InterServerAPI ()
 
std::shared_ptr< Horizon::Models::SessionData > get_session_data (uint32_t auth_code)
 Obtain session data from the inter-server. More...
 
void request_authorisation ()
 
void delete_session (uint32_t auth_code)
 Request inter to delete a session from the server's storage. More...
 
void store_session_data (std::shared_ptr< Horizon::Models::SessionData > const &session_data)
 Insert or Update session data into the inter server storage. More...
 
std::shared_ptr< Horizon::Models::GameAccount > get_game_account (uint32_t account_id)
 Obtain game account data from the inter-server. More...
 
void delete_game_account (uint32_t account_id)
 Request inter to delete a game account from the server's storage. More...
 
void store_game_account (std::shared_ptr< Horizon::Models::GameAccount > game_account)
 Insert or Update game account data into the inter server storage. More...
 
bool ping_inter_server ()
 
std::shared_ptr< SessionType > get_inter_socket ()
 
void set_inter_socket (std::shared_ptr< SessionType > socket)
 

Private Attributes

std::shared_ptr< SessionType > _inter_socket
 

Constructor & Destructor Documentation

◆ InterServerAPI()

template<class SessionType >
Horizon::Interface::InterServerAPI< SessionType >::InterServerAPI ( )
inline
47 {
48 //
49 }

◆ ~InterServerAPI()

template<class SessionType >
virtual Horizon::Interface::InterServerAPI< SessionType >::~InterServerAPI ( )
inlinevirtual
52 {
53 //
54 }

Member Function Documentation

◆ delete_game_account()

template<class SessionType >
void Horizon::Interface::InterServerAPI< SessionType >::delete_game_account ( uint32_t  account_id)
inline

Request inter to delete a game account from the server's storage.

  • Use carefully, deletions performed will affect all other services.
    Parameters
    [in]account_idgame account ID to check against.
137 {
138 if (_inter_socket != nullptr)
139 _inter_socket->get_session()->get_packet_handler()->Send_CI_GAME_ACCOUNT_DEL(account_id);
140 }
std::shared_ptr< SessionType > _inter_socket
Definition: InterServerAPI.hpp:168

References Horizon::Interface::InterServerAPI< SessionType >::_inter_socket.

◆ delete_session()

template<class SessionType >
void Horizon::Interface::InterServerAPI< SessionType >::delete_session ( uint32_t  auth_code)
inline

Request inter to delete a session from the server's storage.

  • Use carefully, deletions performed will affect all other services.
    Parameters
    [in]auth_codesession auth code to check against.
92 {
93 if (_inter_socket != nullptr)
94 _inter_socket->get_session()->get_packet_handler()->Send_CI_SESSION_DEL(auth_code);
95 }

References Horizon::Interface::InterServerAPI< SessionType >::_inter_socket.

◆ get_game_account()

template<class SessionType >
std::shared_ptr< Horizon::Models::GameAccount > Horizon::Interface::InterServerAPI< SessionType >::get_game_account ( uint32_t  account_id)
inline

Obtain game account data from the inter-server.

  • Does not check if the inter-server is online (but returns nullptr if the session happens to be null).
    Parameters
    [in]account_idgame account ID to check against.
    Returns
    shared_ptr to the game account data or nullptr if none found.
115 {
116 std::shared_ptr<Horizon::Models::GameAccount> game_account = std::make_shared<Horizon::Models::GameAccount>();
117 PACKET_CI_GAME_ACCOUNT_REQ send_pkt;
118 PACKET_IC_GAME_ACCOUNT_REQ_ACK recv_pkt;
119
120 send_pkt.account_id = account_id;
121
122 if (_inter_socket != nullptr
123 && _inter_socket->get_session()->get_packet_handler()->send_and_receive_packet(send_pkt, &recv_pkt) == Horizon::Base::inter_packets::IC_GAME_ACCOUNT_REQ_ACK) {
124 *game_account << recv_pkt.s;
125 return game_account;
126 }
127
128 return nullptr;
129 }

References Horizon::Interface::InterServerAPI< SessionType >::_inter_socket.

◆ get_inter_socket()

template<class SessionType >
std::shared_ptr< SessionType > Horizon::Interface::InterServerAPI< SessionType >::get_inter_socket ( )
inline

◆ get_session_data()

template<class SessionType >
std::shared_ptr< Horizon::Models::SessionData > Horizon::Interface::InterServerAPI< SessionType >::get_session_data ( uint32_t  auth_code)
inline

Obtain session data from the inter-server.

  • Does not check if the inter-server is online (but returns nullptr if the session happens to be null).
    Parameters
    [in]auth_codesession auth code to check against.
    Returns
    shared_ptr to the session data or nullptr if none found.
64 {
65 std::shared_ptr<SessionData> session_data = std::make_shared<Horizon::Models::SessionData>();
66 PACKET_CI_SESSION_REQ send_pkt;
67 PACKET_IC_SESSION_REQ_ACK recv_pkt;
68
69 send_pkt.auth_code = auth_code;
70
71 if (_inter_socket != nullptr
72 && _inter_socket->get_session()->get_packet_handler()->send_and_receive_packet(send_pkt, &recv_pkt) == Horizon::Base::inter_packets::IC_SESSION_REQ_ACK) {
73 *session_data << recv_pkt.s;
74 return session_data;
75 }
76
77 return nullptr;
78 }

References Horizon::Interface::InterServerAPI< SessionType >::_inter_socket.

◆ ping_inter_server()

template<class SessionType >
bool Horizon::Interface::InterServerAPI< SessionType >::ping_inter_server ( )
inline
153 {
154 PACKET_CI_PING send_pkt;
155 PACKET_IC_PONG recv_pkt;
156
157 if (_inter_socket != nullptr && _inter_socket->get_session() && _inter_socket->get_session()->get_packet_handler()
158 &&_inter_socket->get_session()->get_packet_handler()->send_and_receive_packet(send_pkt, &recv_pkt) == Horizon::Base::inter_packets::IC_PONG)
159 return true;
160
161 return false;
162 }

References Horizon::Interface::InterServerAPI< SessionType >::_inter_socket.

◆ request_authorisation()

template<class SessionType >
void Horizon::Interface::InterServerAPI< SessionType >::request_authorisation ( )
inline
81 {
82 if (_inter_socket != nullptr)
83 _inter_socket->get_session()->get_packet_handler()->Send_CI_CONNECT_AUTH();
84 }

References Horizon::Interface::InterServerAPI< SessionType >::_inter_socket.

◆ set_inter_socket()

template<class SessionType >
void Horizon::Interface::InterServerAPI< SessionType >::set_inter_socket ( std::shared_ptr< SessionType >  socket)
inline

◆ store_game_account()

template<class SessionType >
void Horizon::Interface::InterServerAPI< SessionType >::store_game_account ( std::shared_ptr< Horizon::Models::GameAccount >  game_account)
inline

Insert or Update game account data into the inter server storage.

Parameters
[in|out]game_account shared_ptr to the game account data object.
147 {
148 if (_inter_socket != nullptr)
149 _inter_socket->get_session()->get_packet_handler()->Send_CI_GAME_ACCOUNT_SET(*game_account);
150 }

References Horizon::Interface::InterServerAPI< SessionType >::_inter_socket.

◆ store_session_data()

template<class SessionType >
void Horizon::Interface::InterServerAPI< SessionType >::store_session_data ( std::shared_ptr< Horizon::Models::SessionData > const &  session_data)
inline

Insert or Update session data into the inter server storage.

Parameters
[in|out]session_data shared_ptr to the session data object.
102 {
103 if (_inter_socket != nullptr)
104 _inter_socket->get_session()->get_packet_handler()->Send_CI_SESSION_SET(*session_data);
105 }

References Horizon::Interface::InterServerAPI< SessionType >::_inter_socket.

Member Data Documentation

◆ _inter_socket


The documentation for this class was generated from the following file: