Linux上の録画システム「chinachu」で、録画終了したファイルを、移動したり、他のホストに転送したりする枠組みを考えます。
今の状況
とりあえず動作するまで開発したので、GitHubに上げました。
https://github.com/taikoyaP/tsfuriwake
開発前
chinachuのrecorded-scriptの仕組みからperlスクリプトを呼び出し、そこで他のホストに転送していました。
その時の問題点
- 複数の録画が同時に終了すると、複数のファイルが一度に転送されてしまい、負荷とかが心配になる。一応、ioniceとかniceで優先度は下げてるけど、不安。
要求定義
- 録画が終了したファイルを、別のディレクトリに移動したり、別のホストに転送したりしたい。
- 同時に1つのファイルのみを処理するようにしたい
- 移動するためのルールは、別ファイルに設定し、随時書き換えられるようにしたい。
- 設定ファイルは、json形式で書きたい。
基本設計
- サーバプロセスを起動し、このプロセスが移動を実行する。
- サーバプロセスは、クライアントからファイル名を受信し、ファイル名からどこに移動や転送をするかを判断し、実行する。
- サーバプロセスは、同時に1つだけファイルを移動する。
- プロセス間通信には、UNIXドメインソケット(STREAM)を使用する。
- サーバプロセスは、クライアントプロセスから特定のコマンドを受け取ると、設定ファイルを再読み込みする。
- クライアントプロセスは、recorded-scriptから起動される。
- クライアントプロセスは、サーバプロセスにファイル名を送信する。