NCBI C++ ToolKit
execute_unit.hpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 #ifndef GUI_UTILS___EXECUTE_UNIT__HPP
2 #define GUI_UTILS___EXECUTE_UNIT__HPP
3 
4 /* $Id: execute_unit.hpp 26667 2012-10-19 17:47:39Z katargir $
5  * ===========================================================================
6  *
7  * PUBLIC DOMAIN NOTICE
8  * National Center for Biotechnology Information
9  *
10  * This software/database is a "United States Government Work" under the
11  * terms of the United States Copyright Act. It was written as part of
12  * the author's official duties as a United States Government employee and
13  * thus cannot be copyrighted. This software/database is freely available
14  * to the public for use. The National Library of Medicine and the U.S.
15  * Government have not placed any restriction on its use or reproduction.
16  *
17  * Although all reasonable efforts have been taken to ensure the accuracy
18  * and reliability of the software and data, the NLM and the U.S.
19  * Government do not and cannot warrant the performance or results that
20  * may be obtained by using this software or data. The NLM and the U.S.
21  * Government disclaim all warranties, express or implied, including
22  * warranties of performance, merchantability or fitness for any particular
23  * purpose.
24  *
25  * Please cite the author in any work or product based on this material.
26  *
27  * ===========================================================================
28  *
29  * Authors: Roman Katargin
30  *
31  * File Description:
32  *
33  */
34 
35 #include <corelib/ncbistd.hpp>
36 
38 
39 class ICanceled;
40 
41 ///////////////////////////////////////////////////////////////////////////////
42 // IExecuteUnit is interface that allows to execute potentially long code
43 // on either main or worker thread providing ability to interrupt proccess.
44 // No exceptions can be thrown from either member
45 
47 {
48 public:
49  virtual ~IExecuteUnit() {}
50 
51  // This member is called on the main thread to allow
52  // some preliminary actions including user interactions
53  // for example to allow a user to select options
54  // Shouldn't execute lenghty computations
55  // Returns true to continue or false to cancel execution
56  virtual bool PreExecute() = 0;
57 
58  // This member can be called either on the main thread or worker thread
59  // implements lengthy computations
60  // Returns true on success or false on failure
61  virtual bool Execute(ICanceled& canceled) = 0;
62 
63  // This member is called on the main thread to implement some postproccessing
64  // including user interactions for example to report results, errors or resolve problems
65  // Shouldn't execute lenghty computations
66  // Returns true to finish execution or false to cancel
67  virtual bool PostExecute() = 0;
68 };
69 
71 
72 
73 #endif // GUI_UTILS___EXECUTE_UNIT__HPP
74 
Interface for testing cancellation request in a long lasting operation.
Definition: icanceled.hpp:51
virtual ~IExecuteUnit()
virtual bool Execute(ICanceled &canceled)=0
virtual bool PreExecute()=0
virtual bool PostExecute()=0
Include a standard set of the NCBI C++ Toolkit most basic headers.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
Modified on Fri Sep 20 14:57:35 2024 by modify_doxy.py rev. 669887