0% found this document useful (0 votes)
34 views7 pages

Client and Server Software Overview

The software is split into client-side and server-side components. The client-side uses three programs running on Windows, while the server-side uses 9 programs running on Linux servers. Communication between the client and servers is encrypted. The servers can be split between frontend machines handling clients, webservers, gameservers running games, a database machine, and cardshuffler machines.

Uploaded by

Haggy Tomtom
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
34 views7 pages

Client and Server Software Overview

The software is split into client-side and server-side components. The client-side uses three programs running on Windows, while the server-side uses 9 programs running on Linux servers. Communication between the client and servers is encrypted. The servers can be split between frontend machines handling clients, webservers, gameservers running games, a database machine, and cardshuffler machines.

Uploaded by

Haggy Tomtom
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Server/Software Overview

The software can be split into two sections: Client-side and Server-side.

Client side software consists of three separate programs:

1. The main client program (MFC C++)


2. The client update program (MFC C++)
3. The player's web-browser (Internet Explorer/Firefox/Mozilla)

All client software runs under Microsoft Windows 98 and Microsoft Windows 2000/XP.

Server side software consists of 9 main programs (all running under Linux):

1. The Server Manager – this monitors server processes and restarts any processes that have crashed or are not
running
2. The MySQL Subserver – this provides local access to the MYSQL database
3. The Frontend Server – this provides the interface between the client program and the rest of the system.
4. The Game Server – this contains the software that controls the tables
5. The Tournament Server – this supervises running multi-table tournaments
6. The Network Manager – this monitors the network and provides useful network functions.
7. The Webserver (Apache v2) – this provides web-based access to the system
8. The MySQL database server – this provides the database.
9. The Hardware RNG Cardshuffler – this provides quantum-based card-shuffling.

All communication (including database access) is encrypted. Communication between the client and the server uses
standard SSL encryption.

Servers can be split between:


1. Frontend Machines (these provide the main client-based interface)
2. Webserver Machines (these provide the web-based interface)
3. Gameserver Machine (these run the game and tournament processes)
4. Database Machine (this provides the database)
5. Cardshuffler Machine (these provide randomly generated cards)

2
3
4
The main client program
This is an MFC-based program running under Windows 98 and upwards. On startup, it loads a list of Frontend
Server IP addresses from a file and attempts to connect to a Frontend Server. It then identifies itself and sets up a
permanent, encrypted connection with the Frontend Server. Any commands for tables, tournaments, or data-requests
are sent through this one connection and then routed by the Frontend Server to the required location.

The client update program


This is an MFC-based program running under Windows 98 and upwards. On startup, it connects to the webserver
and through a PHP-request, downloads any updates for the clients. Updates are applied through a binary-patching
technique.

The player's web-browser


Almost every web-browser should be supported, but for those with flash & javascript, extra features may be
available. All communication is made through encrypted shttp requests and is session-based.

The Server Manager


This runs on startup and takes a list of processes and runs them. It also monitors all processes for any crashes and/or
termination and restarts any required processes. There is one running server-manager on each machine.

5
The MySQL Subserver
This provides a local connection to the main database and prevents any overloading of the database-connections.
Programs access this through a pipe-driven memory interface. There are up to 10 MySQL Subservers running
on each machine.

The Frontend Server


This provides the interface between the client program and the rest of the system. It handles message-based traffic
and either handles the message directly, or directs it to the appropriate Game Server/Tournament Server. A Frontend
Server process is launched for each client connection and so any crashes will only affect one client.

The Game Server


The Game Server implements the rules for the poker games for a single table. Each player connected to a table
(either playing or watching) is connected (via a Frontend Server) to the Game Server process responsible for that
table. There is one Game Server process for each active table and each Gameserver Machine can have multiple
Game Servers running simultaneously.

The Tournament Server


This supervises the running of a tournament. It handles the registration, seating, reseating, and allocation of prizes. It
also allocates and monitors the Game Servers responsible for the tournament tables. There is one Tournament Server
for each multi-table tournament and each Gameserver Machine can have multiple Tournament Servers running
simultaneously.

6
The Network Manager
This performs many tasks. It allows communication between the servers on the network, saves status information
about the server in the database, provides local caching of frequently used database data, and also monitors the
network for any disruption. There is one network manager running on each machine.

The Webserver (Apache v2)


This provides the web-based interface for the client and administrators. It is session-based and mainly based on PHP
scripts.

The MySQL database


MySQL 5.7.21 Master / Slave replication on a Ubuntu 16.04 LTS Linux dedicated hardware infrastructure, sharded
over LXD container virtualization.

The Hardware RNG Cardshuffler


This uses a quantum process to generate random numbers which are then used to shuffle a deck of cards. It is a 'black
box' and accepts requests for cards and gives 52 random numbers in return. All generated decks are deleted after
sending. There is one cardshuffler running per machine. Each cardshuffler can provide roughly 150 random decks
per second.

You might also like