This is Unofficial EPICS BASE Doxygen Site
epics::pvAccess::AuthorizationRegistry Class Reference

#include "security.h"

Public Member Functions

 POINTER_DEFINITIONS (AuthenticationRegistry)
 
 AuthorizationRegistry ()
 
 ~AuthorizationRegistry ()
 
void add (int prio, const AuthorizationPlugin::shared_pointer &plugin)
 
bool remove (const AuthorizationPlugin::shared_pointer &plugin)
 
void run (const std::tr1::shared_ptr< PeerInfo > &peer)
 

Static Public Member Functions

static AuthorizationRegistryplugins ()
 

Detailed Description

Definition at line 279 of file security.h.

Constructor & Destructor Documentation

epics::pvAccess::AuthorizationRegistry::AuthorizationRegistry ( )

Definition at line 254 of file security.cpp.

255  :busy(0)
256 {}
epics::pvAccess::AuthorizationRegistry::~AuthorizationRegistry ( )

Definition at line 156 of file security.cpp.

156 {}

Member Function Documentation

void epics::pvAccess::AuthorizationRegistry::add ( int  prio,
const AuthorizationPlugin::shared_pointer &  plugin 
)

Definition at line 265 of file security.cpp.

266 {
267  Guard G(mutex);
268  // we don't expect changes after server start
269  if(busy)
270  throw std::runtime_error("AuthorizationRegistry busy");
271  if(map.find(prio)!=map.end())
272  THROW_EXCEPTION2(std::logic_error, "Authorization plugin already registered with this priority");
273  map[prio] = plugin;
274 }
#define THROW_EXCEPTION2(TYPE, MSG)
epicsMutex mutex
Definition: security.cpp:160
AuthorizationRegistry & epics::pvAccess::AuthorizationRegistry::plugins ( )
static

Definition at line 258 of file security.cpp.

259 {
260  epicsThreadOnce(&authGblOnce, &authGblInit, 0);
261  assert(authGbl);
262  return authGbl->authorizers;
263 }
#define assert(exp)
Declare that a condition should be true.
Definition: epicsAssert.h:70
LIBCOM_API void epicsStdCall epicsThreadOnce(epicsThreadOnceId *id, EPICSTHREADFUNC, void *arg)
epics::pvAccess::AuthorizationRegistry::POINTER_DEFINITIONS ( AuthenticationRegistry  )
bool epics::pvAccess::AuthorizationRegistry::remove ( const AuthorizationPlugin::shared_pointer &  plugin)

Definition at line 276 of file security.cpp.

277 {
278  Guard G(mutex);
279  if(busy)
280  throw std::runtime_error("AuthorizationRegistry busy");
281  for(map_t::iterator it(map.begin()), end(map.end()); it!=end; ++it) {
282  if(it->second==plugin) {
283  map.erase(it);
284  return true;
285  }
286  }
287  return false;
288 }
epicsMutex mutex
Definition: security.cpp:160
void epics::pvAccess::AuthorizationRegistry::run ( const std::tr1::shared_ptr< PeerInfo > &  peer)

Definition at line 290 of file security.cpp.

291 {
292  {
293  Guard G(mutex);
294  busy++;
295  }
296  for(map_t::iterator it(map.begin()), end(map.end()); it!=end; ++it)
297  {
298  (it->second)->authorize(peer);
299  }
300  {
301  Guard G(mutex);
302  assert(busy>=0);
303  busy--;
304  }
305 }
#define assert(exp)
Declare that a condition should be true.
Definition: epicsAssert.h:70
epicsMutex mutex
Definition: security.cpp:160

The documentation for this class was generated from the following files: