Use wptr::expired() instead of wptr::lock() for testing if the
shared pointer is still valid, *much* faster!
Also switched from index to interator, but that's incidental.
Each instance of the caContext class represents a separate CA context,
so each CAChannelProvider creates one and keeps a shared_ptr to it,
making that available to its channels and channel operations. These
also take their own shared_ptr to it as well so the context cannot be
destroyed while it might be needed.
A related caContext Attach object is intended to be short-lived, and
to be allocated on the stack. When created it saves the current CA
context for the thread, replacing it from the caContext given to its
constructor. CA operations will now use the attached context. When the
Attach destructor runs it detaches the thread from the current context
(checking still has the expected value) and re-attaches the thread to
any context that was saved by the constructor.
Channel connection notifications are now handled by connectNotifier,
getDone, putDone and monitor events handled by resultNotifier.
A notifierConveyor is generic, and contains a queue and a thread.
You pass a Notification pointing to a NotifierClient to a Conveyor's
notifyClient() method, and the thread will call the client's
notifyClient() method once it reaches the front of the queue.
The conveyor threads stop when the caProvider is destroyed.
The queue stores weak pointers, so queued notifications won't prevent
client objects from being destroyed.
* auth:
fix osdGetRoles
oops
Add showauth executable
getgrouplist() on OSX has different sig.
auth fix mingw static
fix search PeerInfo
PeerInfo in pva/server.h and pva/sharedstate.h
make PeerInfo available during search phase
auth status void accidental success.
minor doc
always need to link with netapi32 now
authorize with local group lookup
Add osdGetRoles()
authorization framework
pvasr show PeerInfo
redo security (aka. access control)
remove asCheck
# Conflicts:
# src/server/pv/responseHandlers.h
# src/server/responseHandlers.cpp