13 #define epicsExportSharedSymbols 35 ChannelConnectThread::ChannelConnectThread()
40 ChannelConnectThread::~ChannelConnectThread()
46 void ChannelConnectThread::start()
48 thread = std::tr1::shared_ptr<epicsThread>(
new epicsThread(
50 "channelConnectThread",
57 void ChannelConnectThread::stop()
63 waitForCommand.signal();
67 void ChannelConnectThread::channelConnected(
72 if(notifyChannelRequester->isOnQueue)
return;
73 notifyChannelRequester->isOnQueue =
true;
74 notifyChannelQueue.push(notifyChannelRequester);
76 waitForCommand.signal();
79 void ChannelConnectThread::run()
83 waitForCommand.wait();
89 if(!notifyChannelQueue.empty())
93 notifyChannelQueue.pop();
96 notifyChannelRequester = reqPtr.get();
102 if(notifyChannelRequester!=
NULL)
105 if(channel) channel->notifyClient();
109 waitForStop.signal();
std::tr1::weak_ptr< NotifyChannelRequester > NotifyChannelRequesterWPtr
std::tr1::shared_ptr< NotifyChannelRequester > NotifyChannelRequesterPtr
TODO only here because of the Lockable.
A lock for multithreading.
LIBCOM_API unsigned int epicsStdCall epicsThreadGetStackSize(epicsThreadStackSizeClass size)
std::tr1::shared_ptr< CAChannel > CAChannelPtr
#define epicsThreadPriorityLow
Extended replacement for the Posix exit and atexit routines.
std::tr1::shared_ptr< ChannelConnectThread > ChannelConnectThreadPtr