POCOを使用してマルチディスタンスディレクトリウォッチャーを作成するにはどうすればよいですか?POCOを使用するマルチ深度ディレクトリウォッチャー
それは主にDにある場合:\ DDD、そして私たちもDに移動:\ DDD \ D1 \ D2 \ D3 \ NewTextDoc.txt、その後も、それは私に通知しなければなりません。 私は最初のディレクトリのためだけにそれを行うことができます。 イベントリスナーを使用し、初期ディレクトリで何かが発生した場合に通知します。ここで
は働いていた私のコードです:
try
{
AutoPtr<PropertyFileConfiguration> pConf = new
PropertyFileConfiguration("EventListener.properties");
Poco::DirectoryWatcher dirWatcher(pConf->getString("path"),
Poco::DirectoryWatcher::DW_FILTER_ENABLE_ALL,
Poco::DirectoryWatcher::DW_DEFAULT_SCAN_INTERVAL);
dirWatcher.itemModified += Poco::delegate(this, &ClsDirWatcher::onFileModified); //good
dirWatcher.itemMovedFrom += Poco::delegate(this, &ClsDirWatcher::onFileMovedFrom); //no way, seems only linux
dirWatcher.itemMovedTo += Poco::delegate(this, &ClsDirWatcher::onFileMovedTo); //no way, seems only linux
dirWatcher.itemAdded += Poco::delegate(this, &ClsDirWatcher::onFileAdded); //working fine
dirWatcher.itemRemoved += Poco::delegate(this, &ClsDirWatcher::onFileRemoved); //lol!!!
waitForTerminationRequest();
}
catch (Poco::Exception& exc)
{
logger().log(exc);
}
私は、新しいものが作成されるたびにディレクトリを個別に保持するスレッドを使用する必要があることを理解しています。そうですか? – sourav
親スレッドが1つあり、新しいディレクトリが作成されるたびにディレクトリを監視するスレッドが存在します。このようにして、すべてのディレクトリとサブディレクトリを監視する再帰的なスレッド作成を構成できます。しかし、問題は、すべてのスレッドを処理するマスターコントロールが存在しないことです。 これは良いデザインだとは思わない。誰かが私に道を示唆してください。 – sourav