]> Creatis software - creaImageIO.git/blob - src/creaImageIOListener.cpp
33090d5828eb7e8a7b6c44e5e9380c02142107f3
[creaImageIO.git] / src / creaImageIOListener.cpp
1 #include <creaImageIOListener.h>
2 #include <creaImageIOSystem.h>
3 #include "boost/filesystem.hpp"
4 #include <boost/filesystem/operations.hpp>
5 #include <boost/utility.hpp>
6
7 namespace fs = boost::filesystem;
8 using boost::filesystem::path;
9
10 using namespace crea;
11
12 namespace creaImageIO
13 {
14   //=====================================================================
15   // CTor
16   Listener::Listener()
17   {
18
19         boost::mutex::scoped_lock lock(mMutex);
20     GimmickDebugMessage(6,"Listener::Listener"
21                         <<std::endl);
22         mDrive="E:";
23         mMounted=false;
24         mAddFiles=false;
25         mRemoveFiles=true;
26
27   }
28   //=====================================================================
29
30   //=====================================================================
31   /// Destructor
32   Listener::~Listener()
33   {
34     boost::mutex::scoped_lock lock(mMutex);
35     GimmickDebugMessage(6,"Listener::~Listener"
36                         <<std::endl);
37   }
38   //=====================================================================
39
40   void*  Listener::Entry()
41   {       
42     GimmickDebugMessage(6,"Listener::Entry()"<<std::endl);
43         while(!TestDestroy())
44           { 
45                 try  
46                 {
47                         fs::exists( mDrive );
48                         if(!mMounted && mAddFiles)
49                         {
50                                 mMounted=true;
51                                 SendSignal(mMounted);           
52                         }
53                         else if(!mMounted)
54                         {
55                                 mMounted=true;
56                         }
57                         
58                 }
59                 catch (...)
60                 {
61                         if(mMounted && mRemoveFiles)
62                         {
63                           mMounted=false;
64                           SendSignal(mMounted);
65                         }
66                         else if(mMounted)
67                         {
68                                 mMounted=false;
69                         }
70                 }
71
72                 clock_t endwait;
73                 endwait = clock () + 0.001 * CLOCKS_PER_SEC ;
74                 while (clock() < endwait ) {}
75                         
76       }
77     return 0;
78   }
79
80   //=====================================================================
81
82   //=====================================================================
83   void Listener::OnExit()
84   {
85     GimmickDebugMessage(6,"Listener::OnExit() "<<std::endl);
86   }
87
88    //====================================================================
89   void Listener::ConnectObserver(MountingCallbackType callback)
90   {
91     mMountingSignal.connect(callback);
92   }
93
94    //======================================================================
95   void Listener::SendSignal(bool mount)
96   {
97           mMountingSignal(mount);
98   }
99
100
101
102  
103 } // EO namespace creaImageIO
104