This shows you the differences between two versions of the page.

Link to this comparison view

public:gsoc:repository_architecture [2016/08/02 20:08] (current)
Line 1: Line 1:
 +====== Server Application Architecture ======
 +After installation,​ you'll have the following files in your file system:
 +  * /​usr/​bin/​ccr -- Server application executable
 +  * /​usr/​bin/​ccr-watchdog -- Connection watchdog script (in case you installed it)
 +  * /​etc/​init.d/​ccr -- Service script file
 +  * /​etc/​init.d/​ccr-watchdog -- Connection watchdog service (in case you installed it)
 +  * /​usr/​bin/​ccextractor -- CCExtractor executable
 +  * /​etc/​ccr/​ccr.ini -- Server application configuration file
 +  * /​etc/​ccr/​db.ini -- Database connection configuration file
 +  * /var/www/ -- Web scripts
 +  * /​etc/​httpd/​conf.d/​ccr.conf -- Apache configuration file
 +  * /​var/​tmp/​cce-input/​ -- CCExtractor input pipes
 +  * /​var/​tmp/​cce-output/​ -- CCExtractor output files
 +  * /srv/web/ -- Server app -- web scripts buffer file
 +  * /​srv/​archive -- Received captions
 +When you execute //ccr// command it does the following things:
 +  - Binds to specified port and accepts new client connections
 +  - For each accepted connection it forks a new process that handles client'​s data
 +  - Then it checks if client has send required packets such as password, description and BIN header.
 +  - If it did, adds this client to //clients// and //​active_clients//​ tables in the database, otherwise it closes connection. Now it's ready to receive other client'​s data.
 +  - Forks CCExtractor and redirects received BIN data as the input and the output goes to ///​var/​tmp/​cce-output///​ directory
 +  - When CCExtractor starts to output closed captions, they are stored in:
 +    * ///​srv/​archive///​ in TTXT, SRT and BIN formats. SRT is converted from TTXT by server application
 +    * the //​programs//​ database table in TXT format
 +    * ///​srv/​web///​ buffer files so that they can be viewed from web pages
 +  - Also server application is responsible for changing current program. It happens every 2 hours unless no EPG is supplied. In clients do sends EPG, then times when to change the current program is extracted from EPG events.
 +  - Every 3 seconds client and server sends each other keep-alive packets and close connection if they doesn'​t receive them for 20 sec. Server stores the timestamp of the last received keep-alive packet in //​active_clients//​ table. It's for the case when magic happens and connection is not closed gracefully so that watchdog can remove it.
 +  - When connection is closed, the client is removed from //​active_clients//​ table and its temporary files are removed form the file system
  • public/gsoc/repository_architecture.txt
  • Last modified: 2016/08/02 20:08
  • (external edit)