This is Unofficial EPICS BASE Doxygen Site
repeaterSubscribeTimer.h
Go to the documentation of this file.
1 /*************************************************************************\
2 * Copyright (c) 2002 The University of Chicago, as Operator of Argonne
3 * National Laboratory.
4 * Copyright (c) 2002 The Regents of the University of California, as
5 * Operator of Los Alamos National Laboratory.
6 * EPICS BASE is distributed subject to a Software License Agreement found
7 * in file LICENSE that is included with this distribution.
8 \*************************************************************************/
9 
10 /*
11  *
12  *
13  * L O S A L A M O S
14  * Los Alamos National Laboratory
15  * Los Alamos, New Mexico 87545
16  *
17  * Copyright, 1986, The Regents of the University of California.
18  *
19  *
20  * Author Jeffrey O. Hill
21  * johill@lanl.gov
22  * 505 665 1831
23  */
24 
25 #ifndef INC_repeaterSubscribeTimer_H
26 #define INC_repeaterSubscribeTimer_H
27 
28 #include "epicsTimer.h"
29 
30 #include "libCaAPI.h"
31 
32 class epicsMutex;
33 class cacContextNotify;
34 
36 public:
37  virtual ~repeaterTimerNotify () = 0;
38  virtual void repeaterRegistrationMessage (
39  unsigned attemptNumber ) = 0;
40  virtual int printFormated (
41  epicsGuard < epicsMutex > & callbackControl,
42  const char * pformat, ... ) = 0;
43 };
44 
45 class repeaterSubscribeTimer : private epicsTimerNotify {
46 public:
48  repeaterTimerNotify &, epicsTimerQueue &,
49  epicsMutex & cbMutex, cacContextNotify & ctxNotify );
50  virtual ~repeaterSubscribeTimer ();
51  void start ();
52  void shutdown (
53  epicsGuard < epicsMutex > & cbGuard,
54  epicsGuard < epicsMutex > & guard );
55  void confirmNotify ();
56  void show ( unsigned level ) const;
57 private:
58  epicsTimer & timer;
59  repeaterTimerNotify & iiu;
60  epicsMutex & cbMutex;
61  cacContextNotify & ctxNotify;
62  mutable epicsMutex stateMutex;
63  unsigned attempts;
64  bool registered;
65  bool once;
66  expireStatus expire ( const epicsTime & currentTime );
68  repeaterSubscribeTimer & operator = ( const repeaterSubscribeTimer & );
69 };
70 
71 #endif // ifdef INC_repeaterSubscribeTimer_H
virtual void repeaterRegistrationMessage(unsigned attemptNumber)=0
virtual int printFormated(epicsGuard< epicsMutex > &callbackControl, const char *pformat,...)=0