#ifndef _CLASS_QUEUE_ #define _CLASS_QUEUE_ #include #include #include #include #include #include #include #define QUEUE_MODE_SEND 1 #define QUEUE_MODE_RECV 2 #define QUEUE_SUCCESS 1 #define QUEUE_ERR_MSGSND_FAILED -9000 #define QUEUE_ERR_MSGRCV_FAILED -9001 #define QUEUE_ERR_MSGGET_FAILED -9002 #define QUEUE_ERR_MSGCTL_FAILED -9003 #define QUEUE_ERR_CANNOT_OPEN_FILE -9010 #define QUEUE_ERR_ID_READ -9011 #define QUEUE_ERR_ID_BLANK -9012 #define QUEUE_MAX_CMD 10 #define QUEUE_MAX_INF 20 typedef struct{ char cmd[ QUEUE_MAX_CMD ]; char inf[ QUEUE_MAX_INF ]; } msgcmd_t; typedef struct{ long mtype; msgcmd_t msg; } msg_t; class queue { private: int m_mode; char* m_filename; int m_mqd; msg_t m_msg; public: queue(); ~queue(); void set_mode_send( void ); void set_mode_recv( void ); void set_filename( const char* filename ); int open( void ); int close( void ); int send( const char* cmd, const char* inf ); int recv( void ); virtual void do_cmd( const char* cmd, const char* inf ) = 0; void print( void ); int list( void ); int all_list_clear( void ); private: void release_filename( void ); }; #endif