ProteoWizard
IterationListener.hpp
Go to the documentation of this file.
1 //
2 // $Id$
3 //
4 //
5 // Original author: Darren Kessner <darren@proteowizard.org>
6 //
7 // Copyright 2008 Spielberg Family Center for Applied Proteomics
8 // Cedars Sinai Medical Center, Los Angeles, California 90048
9 //
10 // Licensed under the Apache License, Version 2.0 (the "License");
11 // you may not use this file except in compliance with the License.
12 // You may obtain a copy of the License at
13 //
14 // http://www.apache.org/licenses/LICENSE-2.0
15 //
16 // Unless required by applicable law or agreed to in writing, software
17 // distributed under the License is distributed on an "AS IS" BASIS,
18 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 // See the License for the specific language governing permissions and
20 // limitations under the License.
21 //
22 
23 
24 #ifndef _ITERATIONLISTENER_HPP_
25 #define _ITERATIONLISTENER_HPP_
26 
27 
29 #include "boost/shared_ptr.hpp"
30 #include <string>
31 
32 
33 namespace pwiz {
34 namespace util {
35 
36 
37 /// interface to be implemented by clients who want progress callbacks
39 {
40  public:
41 
42  enum Status {Status_Ok, Status_Cancel};
43  static std::string no_message;
44 
46  {
48  size_t iterationCount; // 0 == unknown
49  const std::string& message;
50 
51  UpdateMessage(size_t index, size_t count, const std::string& message = no_message)
52  : iterationIndex(index), iterationCount(count), message(message)
53  {}
54  };
55 
56  virtual Status update(const UpdateMessage& updateMessage) {return Status_Ok;}
57 
58  virtual ~IterationListener(){}
59 };
60 
61 typedef boost::shared_ptr<IterationListener> IterationListenerPtr;
62 
63 
64 /// handles registration of IterationListeners and broadcast of update messages
66 {
67  public:
68 
70  void addListener(const IterationListenerPtr& listener, size_t iterationPeriod);
71  void addListenerWithTimer(const IterationListenerPtr& listener, double timePeriod); // seconds
72  void removeListener(const IterationListenerPtr& listener);
73 
75  const IterationListener::UpdateMessage& updateMessage) const;
76 
77  private:
78  class Impl;
79  boost::shared_ptr<Impl> impl_;
82 };
83 
84 
85 } // namespace util
86 } // namespace pwiz
87 
88 
89 #endif // _ITERATIONLISTENER_HPP_
90 
pwiz::util::IterationListener::update
virtual Status update(const UpdateMessage &updateMessage)
Definition: IterationListener.hpp:56
pwiz::util::IterationListener::no_message
static std::string no_message
Definition: IterationListener.hpp:43
pwiz::util::IterationListener::UpdateMessage
Definition: IterationListener.hpp:46
pwiz::util::IterationListenerRegistry::removeListener
void removeListener(const IterationListenerPtr &listener)
pwiz
Definition: ChromatogramList_Filter.hpp:36
pwiz::util::IterationListener::UpdateMessage::message
const std::string & message
Definition: IterationListener.hpp:49
pwiz::util::IterationListener::UpdateMessage::UpdateMessage
UpdateMessage(size_t index, size_t count, const std::string &message=no_message)
Definition: IterationListener.hpp:51
pwiz::util::IterationListener::UpdateMessage::iterationIndex
size_t iterationIndex
Definition: IterationListener.hpp:47
pwiz::util::IterationListenerRegistry::impl_
boost::shared_ptr< Impl > impl_
Definition: IterationListener.hpp:78
PWIZ_API_DECL
#define PWIZ_API_DECL
Definition: Export.hpp:32
Export.hpp
pwiz::util::IterationListenerRegistry::addListenerWithTimer
void addListenerWithTimer(const IterationListenerPtr &listener, double timePeriod)
pwiz::util::IterationListenerRegistry::operator=
IterationListenerRegistry & operator=(IterationListenerRegistry &)
pwiz::util::IterationListener::Status_Ok
@ Status_Ok
Definition: IterationListener.hpp:42
pwiz::util::IterationListenerRegistry
handles registration of IterationListeners and broadcast of update messages
Definition: IterationListener.hpp:66
pwiz::util::IterationListener::Status
Status
Definition: IterationListener.hpp:42
pwiz::util::IterationListenerRegistry::IterationListenerRegistry
IterationListenerRegistry()
pwiz::util::IterationListenerRegistry::broadcastUpdateMessage
IterationListener::Status broadcastUpdateMessage(const IterationListener::UpdateMessage &updateMessage) const
pwiz::util::IterationListener::~IterationListener
virtual ~IterationListener()
Definition: IterationListener.hpp:58
pwiz::util::IterationListener::UpdateMessage::iterationCount
size_t iterationCount
Definition: IterationListener.hpp:48
Status_Ok
Status_Ok
Definition: MSDataAnalyzer.hpp:164
pwiz::util::IterationListenerPtr
boost::shared_ptr< IterationListener > IterationListenerPtr
Definition: IterationListener.hpp:61
pwiz::util::IterationListenerRegistry::addListener
void addListener(const IterationListenerPtr &listener, size_t iterationPeriod)
pwiz::util::IterationListener
interface to be implemented by clients who want progress callbacks
Definition: IterationListener.hpp:39
pwiz::util::IterationListenerRegistry::IterationListenerRegistry
IterationListenerRegistry(IterationListenerRegistry &)