creaImageIO_lib
creaImageIOListener.cpp
Go to the documentation of this file.
1 /*
2 # ---------------------------------------------------------------------
3 #
4 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
5 # pour la Santé)
6 # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
7 # Previous Authors : Laurent Guigues, Jean-Pierre Roux
8 # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
9 #
10 # This software is governed by the CeCILL-B license under French law and
11 # abiding by the rules of distribution of free software. You can use,
12 # modify and/ or redistribute the software under the terms of the CeCILL-B
13 # license as circulated by CEA, CNRS and INRIA at the following URL
14 # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
15 # or in the file LICENSE.txt.
16 #
17 # As a counterpart to the access to the source code and rights to copy,
18 # modify and redistribute granted by the license, users are provided only
19 # with a limited warranty and the software's author, the holder of the
20 # economic rights, and the successive licensors have only limited
21 # liability.
22 #
23 # The fact that you are presently reading this means that you have had
24 # knowledge of the CeCILL-B license and that you accept its terms.
25 # ------------------------------------------------------------------------
26 */
27 
28 
29 #include <creaImageIOListener.h>
30 #include <creaImageIOSystem.h>
31 #include "boost/filesystem.hpp"
32 #include <boost/filesystem/operations.hpp>
33 #include <boost/utility.hpp>
34 
35 namespace fs = boost::filesystem;
36 using boost::filesystem::path;
37 
38 using namespace crea;
39 
40 namespace creaImageIO
41 {
42  //=====================================================================
43  // CTor
44  Listener::Listener()
45  {
46 
47  boost::mutex::scoped_lock lock(mMutex);
48  GimmickDebugMessage(6,"Listener::Listener"
49  <<std::endl);
50  mDrive="E:";
51  mMounted=false;
52  mAddFiles=false;
53  mRemoveFiles=true;
54 
55  }
56  //=====================================================================
57 
58  //=====================================================================
60  Listener::~Listener()
61  {
62  boost::mutex::scoped_lock lock(mMutex);
63  GimmickDebugMessage(6,"Listener::~Listener"
64  <<std::endl);
65  }
66  //=====================================================================
67 
68  void* Listener::Entry()
69  {
70  GimmickDebugMessage(6,"Listener::Entry()"<<std::endl);
71  while(!TestDestroy())
72  {
73  try
74  {
75  fs::exists( mDrive );
76  if(!mMounted && mAddFiles)
77  {
78  mMounted=true;
79  SendSignal(mMounted);
80  }
81  else if(!mMounted)
82  {
83  mMounted=true;
84  }
85 
86  }
87  catch (...)
88  {
89  if(mMounted && mRemoveFiles)
90  {
91  mMounted=false;
92  SendSignal(mMounted);
93  }
94  else if(mMounted)
95  {
96  mMounted=false;
97  }
98  }
99 
100  clock_t endwait;
101  endwait = clock () + 0.001 * CLOCKS_PER_SEC ;
102  while (clock() < endwait ) {}
103 
104  }
105  return 0;
106  }
107 
108  //=====================================================================
109 
110  //=====================================================================
111  void Listener::OnExit()
112  {
113  GimmickDebugMessage(6,"Listener::OnExit() "<<std::endl);
114  }
115 
116  //====================================================================
117  void Listener::ConnectObserver(MountingCallbackType callback)
118  {
119  mMountingSignal.connect(callback);
120  }
121 
122  //======================================================================
123  void Listener::SendSignal(bool mount)
124  {
125  mMountingSignal(mount);
126  }
127 
128 
129 
130 
131 } // EO namespace creaImageIO
132