ScaleOut Native C++ API Library  5.1
 All Classes Functions Variables Enumerations Enumerator Friends
event_registration.h
1 #pragma once
2 
3 #include <stdint.h>
4 #include <stdexcept>
5 
6 #include "soss_client/typed_named_cache.h"
7 #include "boost/function.hpp"
8 
9 namespace sosscli {
10 
11 typedef boost::function<int (const SossKey &key, uint32_t code)> ExpirationCallback;
12 
16 {
17 public:
18 
19  /* Constructors */
20 
22  virtual ~EventRegistration() {};
23 
24  /* Public methods */
25 
26  static void register_expiration_handler(const NamedCache &nc, ExpirationCallback callback);
27  static void deregister_expiration_handler(const NamedCache &nc);
28 
29 protected:
30 
31 private:
33  static void init_once();
34 
35  static int expiration_callback_handler(SOSS_OBJKEY key, unsigned int code);
36 
37  static boost::unordered_map<uint32_t, ExpirationCallback> expiration_callbacks_;
38 
40  static boost::once_flag run_once_;
41  static bool is_init_;
42 };
43 
44 
45 
46 
47 } // namespace