Advertisement
bueddl

Untitled

Nov 7th, 2015
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.77 KB | None | 0 0
  1.  
  2. // Inside plugin up() method
  3. my_module::up()
  4. {
  5.     core::security().register_permission("my_module.do_sth", &my_module::do_sth);
  6. }
  7.  
  8.  
  9. // Perm check in base module
  10.  
  11. class base_module {
  12. public:
  13.  
  14.     // Will be invoked in dedicated thread
  15.     void main()
  16.     {
  17.         // ...
  18.         m_running = true;
  19.         while (m_running)
  20.         {
  21.             // Get message from priority queue
  22.             auto message = m_queue.pop_front();
  23.  
  24.             // ...
  25.             switch (message.type()) {
  26.                 // ...
  27.                 case message_type::REQUEST:
  28.                     core::request request = message;
  29.                     if (core::security().has_permission(request.fn, request.sender)) {
  30.                         auto wrapper = request.wrap(); // wrap fn into request wrapper, aka. bind all arguments
  31.                         wrapper(); // execute
  32.                     }
  33.                 break;
  34.  
  35.  
  36.                 // ...
  37.             }
  38.         }
  39.         // ...
  40.     }
  41.     // ...
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement