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