00001 #ifndef __J2K__Message_INL__
00002 #define __J2K__Message_INL__
00003
00004 inline int Message::receive( int channel )
00005 {
00006 int rcvid = MsgReceive( channel, &msg, sizeof( msg ), NULL );
00007 return rcvid;
00008 }
00009
00010 inline int Message::isIO()
00011 {
00012 return ( msg.hdr.type >= _IO_BASE && msg.hdr.type <= _IO_MAX );
00013 }
00014
00015 inline void Message::reply( int rcvid )
00016 {
00017 MsgReply( rcvid, EOK, &msg, sizeof( msg ) );
00018 }
00019
00020 inline void Message::reply( int rcvid, int number, int state = EOK )
00021 {
00022 msg.number = number;
00023 MsgReply( rcvid, state, &msg, sizeof( msg ) );
00024 }
00025
00026 inline int Message::send( int fd, Message* replyMsg )
00027 {
00028 register int rc = MsgSend( fd, &msg, sizeof(msg), &replyMsg->msg, sizeof(msg) );
00029 return rc;
00030 }
00031
00032 inline void Message::reset()
00033 {
00034 memset( &msg, 0, sizeof( fred_msg_data_t ) );
00035 msg.number = -1;
00036 }
00037
00038 inline void Message::copy( const Message* src )
00039 {
00040 memcpy( &msg, &src->msg, sizeof( fred_msg_data_t ) );
00041 }
00042
00043
00044 inline fred_msg_data_t Message::getMessage() { return msg; }
00045 inline void* Message::getMessageAddr() { return (void*)&msg; }
00046 inline size_t Message::getMessageSize() { return sizeof( msg_t ); }
00047 inline int Message::getNumber() { return msg.number; }
00048 inline void Message::setNumber( int nb ) { msg.number = nb; }
00049 inline int Message::getRequest() { return msg.request; }
00050 inline void Message::setRequest( int r ) { msg.request = r; }
00051 inline int Message::getStatus() { return msg.status; }
00052 inline void Message::setStatus( int s ) { msg.status = s; }
00053 inline int Message::getIndex() { return msg.index; }
00054 inline void Message::setIndex( int i ) { msg.index = i; }
00055 inline void* Message::getData() { return msg.data; }
00056 inline void Message::setData( void* ptr ) { msg.data = ptr; }
00057 inline pthread_t Message::getPThread() { return msg.pid; }
00058 inline void Message::setPThread( pthread_t tid ) { msg.pid = tid; }
00059
00060
00061 inline msg_header_t Message::getHeader() { return msg.hdr; }
00062 inline int Message::getHeaderCode() { return msg.hdr.code; }
00063 inline int Message::getHeaderScoid() { return msg.hdr.scoid; }
00064
00065
00066 inline BOOL Message::isStatus() { return ( ( msg.status & MQI_STATUS ) == MQI_STATUS ); }
00067 inline BOOL Message::isGet() { return ( ( msg.status & MQI_GET ) == MQI_GET ); }
00068 inline BOOL Message::isPut() { return ( ( msg.status & MQI_PUT ) == MQI_PUT ); }
00069 inline BOOL Message::isClear() { return ( ( msg.status & MQI_CLEAR ) == MQI_CLEAR ); }
00070 inline BOOL Message::isQuit() { return ( ( msg.status & MQI_QUIT ) == MQI_QUIT ); }
00071 inline BOOL Message::isAddConsumer() { return ( ( msg.status & MQI_ADD_CONSUMER ) == MQI_ADD_CONSUMER ); }
00072 inline BOOL Message::isAddProducer() { return ( ( msg.status & MQI_ADD_PRODUCER ) == MQI_ADD_PRODUCER ); }
00073 inline BOOL Message::isExpired() { return ( ( msg.status & MQI_IS_EXPIRED ) == MQI_IS_EXPIRED ); }
00074 inline BOOL Message::isEmpty() { return ( ( msg.status & MQI_IS_EMPTY ) == MQI_IS_EMPTY ); }
00075 inline BOOL Message::isFull() { return ( ( msg.status & MQI_IS_FULL ) == MQI_IS_FULL ); }
00076 inline BOOL Message::isExist() { return ( ( msg.status & MQI_EXIST ) == MQI_EXIST ); }
00077 inline BOOL Message::isSuicide() { return ( ( msg.status & MQI_SUICIDE ) == MQI_SUICIDE ); }
00078 inline BOOL Message::isTimeout() { return ( ( msg.status & MQI_TIMEOUT ) == MQI_TIMEOUT ); }
00079 inline BOOL Message::isConsumer() { return ( ( msg.status & MQI_CONSUMER ) == MQI_CONSUMER ); }
00080 inline BOOL Message::isProducer() { return ( ( msg.status & MQI_PRODUCER ) == MQI_PRODUCER ); }
00081
00082 #endif // End of Meesage.inl