Project Malmo  0.37.0
ErrorCodeSync.h
1 // --------------------------------------------------------------------------------------------------
2 // Copyright (c) 2016 Microsoft Corporation
3 //
4 // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
5 // associated documentation files (the "Software"), to deal in the Software without restriction,
6 // including without limitation the rights to use, copy, modify, merge, publish, distribute,
7 // sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
8 // furnished to do so, subject to the following conditions:
9 //
10 // The above copyright notice and this permission notice shall be included in all copies or
11 // substantial portions of the Software.
12 //
13 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
14 // NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
16 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
17 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
18 // --------------------------------------------------------------------------------------------------
19 
20 #ifndef _ERRORCODESYNC_H_
21 #define _ERRORCODESYNC_H_
22 
23 // Boost:
24 #include <boost/thread.hpp>
25 
26 namespace malmo
27 {
30  {
31  public:
34 
36  const boost::system::error_code await_error_code();
37 
40  void signal_error_code(const boost::system::error_code& ec);
41  private:
42  boost::condition_variable cond;
43  boost::mutex mutex;
44  boost::system::error_code error_code;
45  };
46 }
47 #endif
Synchronized error code that can be waited on.
Definition: ErrorCodeSync.h:30
const boost::system::error_code await_error_code()
Wait for error code update other than boost::asio::error::would_block.
void init_error_code()
Initialize error code with boost::asio::error::would_block.
void signal_error_code(const boost::system::error_code &ec)
Update error code and signal any waiting threads.