C++에서 폴더 변경 모니터 디자인(Windows)
핫폴더란?
핫 폴더는 다른 폴더와 같습니다. 핫하게 만드는 것은 프로그램(C++로 코딩할 예정)이 변경 사항을 모니터링할 때입니다.
누가 그것을 사용합니까?
소프트웨어 입력은 파일일 수 있습니다. 파일 소스는 카메라 생성 이미지 또는 타사 소프트웨어와 같은 하드웨어일 수 있습니다. 모듈은 입력을 소비하기 위해 폴더의 변경 사항을 감시합니다.
디자인하는 방법?
생각 해봐! 우리에게 필요한 모든 것:
We may heard about observer design pattern. Observers will get notified when a Subject updates. Observer design pattern fits well for this situation.
시작하자!
먼저 두 가지 기본 인터페이스 'ISubject' 및 'IObject'를 정의합니다.
template <typename T>
class ISubject
{
public:
ISubject() = default;
virtual ~ISubject() = default;
virtual AddObserver(const IObserver<T>* pObserver) = 0;
virtual RemoveObserver(const IObserver<T>* pObserver) = 0;
virtual NotifyObservers(const T& data) = 0;
};
template <typename T>
class IObserver
{
public:
IObserver() = default;
virtual ~IObserver() = default;
virtual Uptdate(const T& data) = 0;
};
class DirectoryWatcher : public ISubject
{
protected:
std::string _strDirectory;
HANDLE _pChangeHandle;
bool IsHandleValid();
void Reset(const std::string& strDirectory);
public:
DirectoryWatcher();
~DirectoryWatcher();
bool Start(const std::string& strDirectory);
void Stop();
void AddObserver(const IObserver<std::string>* pObserver);
void RemoveObserver(const IObserver<std::string>* pObserver);
void NotifyObservers(const T& data);
};
class UpdateListener : public IObserver
{
protected:
code_machina::BlockingCollection<std::string> _changeCollection;
public:
UpdateListener();
~UpdateListener();
bool Start(const std::string& strDirectory);
void Stop();
void AddObserver(const IObserver<std::string>* pObserver);
void RemoveObserver(const IObserver<std::string>* pObserver);
void NotifyObservers(const T& data);
};
자세한 내용은 댓글을 달아주세요!
Reference
이 문제에 관하여(C++에서 폴더 변경 모니터 디자인(Windows)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/yashhayaran/design-folder-change-monitor-in-c-windows-2g97텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)