SynchronizeController.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. //---------------------------------------------------------------------------
  2. #ifndef SynchronizeControllerH
  3. #define SynchronizeControllerH
  4. //---------------------------------------------------------------------------
  5. #include <CopyParam.h>
  6. //---------------------------------------------------------------------------
  7. struct TSynchronizeParamType
  8. {
  9. UnicodeString LocalDirectory;
  10. UnicodeString RemoteDirectory;
  11. int Params;
  12. int Options;
  13. };
  14. //---------------------------------------------------------------------------
  15. class TSynchronizeController;
  16. struct TSynchronizeOptions;
  17. class TSynchronizeChecklist;
  18. typedef void __fastcall (__closure * TSynchronizeAbortEvent)
  19. (System::TObject * Sender, bool Close);
  20. typedef void __fastcall (__closure * TSynchronizeThreadsEvent)
  21. (TObject* Sender, TThreadMethod Method);
  22. enum TSynchronizeLogEntry { slScan, slStart, slChange, slUpload, slDelete, slDirChange, slContinuedError };
  23. typedef void __fastcall (__closure * TSynchronizeLog)
  24. (TSynchronizeController * Controller, TSynchronizeLogEntry Entry, const UnicodeString Message);
  25. typedef void __fastcall (__closure * TSynchronizeStartStopEvent)
  26. (System::TObject * Sender, bool Start, const TSynchronizeParamType & Params,
  27. const TCopyParamType & CopyParam, TSynchronizeOptions * Options,
  28. TSynchronizeAbortEvent OnAbort, TSynchronizeThreadsEvent OnSynchronizeThreads,
  29. TSynchronizeLog OnSynchronizeLog);
  30. typedef void __fastcall (__closure * TSynchronizeEvent)
  31. (TSynchronizeController * Sender, const UnicodeString LocalDirectory,
  32. const UnicodeString RemoteDirectory, const TCopyParamType & CopyParam,
  33. const TSynchronizeParamType & Params, TSynchronizeChecklist ** Checklist,
  34. TSynchronizeOptions * Options, bool Full);
  35. typedef void __fastcall (__closure * TSynchronizeInvalidEvent)
  36. (TSynchronizeController * Sender, const UnicodeString Directory, const UnicodeString ErrorStr);
  37. typedef void __fastcall (__closure * TSynchronizeTooManyDirectories)
  38. (TSynchronizeController * Sender, int & MaxDirectories);
  39. //---------------------------------------------------------------------------
  40. namespace Discmon
  41. {
  42. class TDiscMonitor;
  43. }
  44. //---------------------------------------------------------------------------
  45. enum TSynchronizeOperation { soUpload, soDelete };
  46. //---------------------------------------------------------------------------
  47. class TSynchronizeController
  48. {
  49. public:
  50. __fastcall TSynchronizeController(TSynchronizeEvent AOnSynchronize,
  51. TSynchronizeInvalidEvent AOnSynchronizeInvalid,
  52. TSynchronizeTooManyDirectories AOnTooManyDirectories);
  53. __fastcall ~TSynchronizeController();
  54. void __fastcall StartStop(TObject * Sender, bool Start,
  55. const TSynchronizeParamType & Params, const TCopyParamType & CopyParam,
  56. TSynchronizeOptions * Options,
  57. TSynchronizeAbortEvent OnAbort, TSynchronizeThreadsEvent OnSynchronizeThreads,
  58. TSynchronizeLog OnSynchronizeLog);
  59. void __fastcall LogOperation(TSynchronizeOperation Operation, const UnicodeString FileName);
  60. private:
  61. TSynchronizeEvent FOnSynchronize;
  62. TSynchronizeParamType FSynchronizeParams;
  63. TSynchronizeOptions * FOptions;
  64. Discmon::TDiscMonitor * FSynchronizeMonitor;
  65. TSynchronizeAbortEvent FSynchronizeAbort;
  66. TSynchronizeInvalidEvent FOnSynchronizeInvalid;
  67. TSynchronizeTooManyDirectories FOnTooManyDirectories;
  68. TSynchronizeLog FSynchronizeLog;
  69. TCopyParamType FCopyParam;
  70. void __fastcall SynchronizeChange(TObject * Sender, const UnicodeString Directory,
  71. bool & SubdirsChanged);
  72. void __fastcall SynchronizeAbort(bool Close);
  73. void __fastcall SynchronizeLog(TSynchronizeLogEntry Entry, const UnicodeString Message);
  74. void __fastcall SynchronizeInvalid(TObject * Sender, const UnicodeString Directory,
  75. const UnicodeString ErrorStr);
  76. void __fastcall SynchronizeFilter(TObject * Sender, const UnicodeString DirectoryName,
  77. bool & Add);
  78. void __fastcall SynchronizeTooManyDirectories(TObject * Sender, int & MaxDirectories);
  79. void __fastcall SynchronizeDirectoriesChange(TObject * Sender, int Directories);
  80. };
  81. //---------------------------------------------------------------------------
  82. void __fastcall LogSynchronizeEvent(TTerminal * Terminal, const UnicodeString & Message);
  83. //---------------------------------------------------------------------------
  84. #endif