EQU8 Documentation
  • Welcome
  • Integration Guide
    • Examples
    • Download SDK & copy files
    • Server-side configuration
    • Unique identifier & reading user
    • Accepting player and data
    • Polling server events
    • Client-side Configuration
    • Receiving data from the server
    • Polling client events
    • Protecting game resources
    • Protection template file-format
    • Protection Template Example
    • Renaming EQU8 Launcher
    • Configuring EQU8 Launcher
    • Distributing with EQU8
  • Errors
    • Error Status codes
Powered by GitBook
On this page

Was this helpful?

  1. Integration Guide

Polling server events

This is the last step of the server integration! šŸ˜†

Events must be polled as often as possible, preferably every ā€œserver frameā€.

The server-side events are:

  • equ8_event_id_send_request. EQU8 has data to send.

  • equ8_event_id_status. Status for the given user has changed (banned for instance).

If we received a equ8_event_id_send_request event, EQU8 has data that should be sent to the client.

If we received a equ8_event_id_status event, the status for the given client has changed; we simply re-run the user_is_allowed_to_play-function.

EQU8 will NEVER send more than 256 (0x100) bytes in a single packet.

C/C++

switch(equ8_sm_poll_event(c.unique_id(), &equ8_data))
{
    case equ8_event_id_send_request:
    {
        std::cout << "EQU8 Data Send Request: user: '"
            << c.unique_id() << "' size: "
            << equ8_data.send_request.size << std::endl;
        packet_equ8_data session{
            equ8_data.send_request.payload,
            equ8_data.send_request.size };
        //
        // Send the EQU8 data to the client
        //
        send_packet(c, &session);
        break;
    }
    case equ8_event_id_status:
    {
        if(!user_is_allowed_to_play(c.remote_in(), c.unique_id(),
            equ8_data.status.action))
        {
            std::cout << "Client '" << c.unique_id()
                << "' kicked (action: "
                << equ8_data.status.action << ")" << std::endl;
            return false;
        }
        break;
    }
}
switch (equ8.session_manager.poll_event(c.name, ev))
{
    case equ8.equ8_event_id.send_request:
    {
        Console.WriteLine(
            "EQU8 Data Send Request: user: '{0}' size: {1}",
            c.name, ev.get_send_event_size());
        send_packet(c, new packet_equ8_data(
            ev.duplicate_send_event()));
    }
    break;
    case equ8.equ8_event_id.status:
    {
        var action = ev.get_status_action();
        if (!user_is_allowed_to_play(c.addr, c.name, action))
        {
            Console.WriteLine("Client '{0}' kicked (action: {1})",
                c.name, action);
            remove_client(i);
        }
    }
    break;
}
PreviousAccepting player and dataNextClient-side Configuration

Last updated 4 years ago

Was this helpful?