/usr/include/sipxtapi/os/OsMsgDispatcher.h is in libsipxtapi-dev 3.3.0~test17-2.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 | //
// Copyright (C) 2007 SIPez LLC.
// Licensed to SIPfoundry under a Contributor Agreement.
//
// Copyright (C) 2007 SIPfoundry Inc.
// Licensed by SIPfoundry under the LGPL license.
//
// $$
///////////////////////////////////////////////////////////////////////////////
// Author: Keith Kyzivat <kkyzivat AT SIPez DOT com>
#ifndef _OsMsgDispatcher_h_
#define _OsMsgDispatcher_h_
// SYSTEM INCLUDES
#include <os/OsMsgQ.h>
// APPLICATION INCLUDES
#include "os/OsMsg.h"
// DEFINES
// MACROS
// EXTERNAL FUNCTIONS
// EXTERNAL VARIABLES
// CONSTANTS
// STRUCTS
// TYPEDEFS
// FORWARD DECLARATIONS
/**
* @brief Dispatcher for Resource Notification Messages.
*
* The Message Dispatcher is used to hold and notify users of
* messages. If users are not interested in particular types of messages,
* they can subclass this Message dispatcher and provide filtering to enable
* only certain types of messages to be sent up through it's framework.
*/
class OsMsgDispatcher
{
/* //////////////////////////// PUBLIC //////////////////////////////////// */
public:
/* ============================ CREATORS ================================== */
///@name Creators
//@{
/// Default constructor
OsMsgDispatcher();
/**<
* This constructor creates a queue, which will be destroyed in destructor.
*/
/// Constructor for using external message queue for dispatching.
OsMsgDispatcher(OsMsgQ* msgQ);
/**<
* This constructor does not own the passed queue, so won't be deleted
* in destructor. It's user responsibility to manage the queue.
*/
/// Destructor
virtual ~OsMsgDispatcher();
//@}
/* ============================ MANIPULATORS ============================== */
///@name Manipulators
//@{
/// Post a resource notification message.
virtual OsStatus post(const OsMsg& msg);
/**<
* This posts a message to the dispatcher queue.
* @NOTE If the queue is full, a flag will be set that messages
* were lost, and the new messages will be dropped on the floor
* until such time as the queue empties until there is room available.
* It is the application's duty to service and receive messages from
* the queue.
*
* @param[in] msg - the message to post.
* @retval OS_SUCCESS - if it was able to add to the queue,
* @retval OS_LIMIT_REACHED otherwise.
*/
/// Receive a message from the dispatcher queue.
virtual OsStatus receive(OsMsg*& rpMsg,
const OsTime& rTimeout=OsTime::OS_INFINITY);
/**<
* Remove a message from the head of the queue
* Wait until either a message arrives or the timeout expires.
* Other than for messages sent from an ISR, the receiver is responsible
* for freeing the received message.
*
* @param[in] rpMsg - pointer to msg will be stored here.
* @param[in] rTimeout - how long to wait for a notification..
* @retval OS_SUCCESS if the message was received and rpMsg filled in.
* @retval OS_WAIT_TIMEOUT if no message is in the queue before the timeout value.
*/
//@}
/* ============================ ACCESSORS ================================= */
///@name Accessors
//@{
/// Return the number of messages in the queue
inline virtual int numMsgs(void);
/// Returns the maximum number of messages that can be queued
inline int maxMsgs() const;
/* ============================ INQUIRY =================================== */
///@name Inquiry
//@{
/// Return TRUE if the message queue is empty, FALSE otherwise
inline virtual UtlBoolean isEmpty(void);
inline UtlBoolean isMsgsLost() const;
//@}
/* //////////////////////////// PROTECTED ///////////////////////////////// */
protected:
OsMsgQ* mMsgQueue; ///< The message queue that this dispatcher is using.
UtlBoolean mQueueOwned; ///< Indicates whether or not mMsgQueue is owned by the dispatcher
UtlBoolean mMsgsLost; ///< Whether any messages have been dropped on the
///< floor due to the queue being full.
/* //////////////////////////// PRIVATE /////////////////////////////////// */
private:
/// Set that there were notifications lost.
inline void setMsgsLost();
/// Copy constructor (not implemented for this class)
OsMsgDispatcher(const OsMsgDispatcher& rMsgDispatcher);
/// Assignment operator (not implemented for this class)
OsMsgDispatcher& operator=(const OsMsgDispatcher& rhs);
};
/* ============================ INLINE METHODS ============================ */
int OsMsgDispatcher::numMsgs( void )
{
return mMsgQueue->numMsgs();
}
int OsMsgDispatcher::maxMsgs() const
{
return mMsgQueue->maxMsgs();
}
UtlBoolean OsMsgDispatcher::isEmpty( void )
{
return mMsgQueue->isEmpty();
}
UtlBoolean OsMsgDispatcher::isMsgsLost() const
{
return mMsgsLost;
}
void OsMsgDispatcher::setMsgsLost()
{
mMsgsLost = TRUE;
}
#endif // _OsMsgDispatcher_h_
|