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:

  1. Binds to specified port and accepts new client connections
  2. For each accepted connection it forks a new process that handles client's data
  3. Then it checks if client has send required packets such as password, description and BIN header.
  4. 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.
  5. Forks CCExtractor and redirects received BIN data as the input and the output goes to /var/tmp/cce-output/ directory
  6. 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
  7. 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.
  8. 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.
  9. 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: 2021/03/14 21:07
  • (external edit)