単純化されたインターフェイスを CUPS の上に置く印刷システムを書いています。ユーザーがジョブを 1 つのキューにドロップすると、システムはそれらをさまざまな方法 (統計、ページ クォータなど) で処理し、複数のプリンターのいずれかにジョブをディスパッチするための Web インターフェイスをユーザーに提供します。
複数のユーザー キオスク、管理ステーションなどが存在する可能性があるため、同時アクセスを処理できるものにジョブ メタデータを保存する必要があります。(データ構造を「再入可能」と呼べますか?) 私が想像できるいくつかのオプションは次のとおりです。
- MySQL データベース: 非常にやり過ぎですが、確かに安定しており、サポートされています
- 同時アクセスを手動で処理するメタデータ ファイル: 完全に私のニーズに合わせて調整されていますが、MySQL のアトミック性のサブセットを再実装する必要があり、おそらく不十分です。
- 提供されたスレッドセーフな cupsipp.h API を使用して、CUPS 制御ファイルに書き込みます。
最後のオプションが最も魅力的に聞こえますが、落とし穴があります。私はこれを Python で書いていますが、pycups も pkipplib も制御ファイルを変更する方法がないようです。
編集: pkipplib は新しい IPP 要求を生成できることを明確にする必要がありますが、既存の制御ファイルを変更する方法はありません。つまり、新しいジョブとして送信して更新を行う必要があります。
誰でも良いアイデアがありますか?アドバイスをいただければ幸いです。