/************************************************************************
 * AUTHOR: NiuJiuRu
 * FILENAME: swmsgq.h
 * DESCRIPTION: 消息队列
 * NOTE:
 * HISTORY:
 * 1, [2010-09-06] created by NiuJiuRu
 * 2, [2016-08-08] 优化代码, 保障线程安全
 ***********************************************************************/
#ifndef __SWMSGQ_H__
#define __SWMSGQ_H__

#ifdef __cplusplus
extern "C"
{
#endif

/* 创建一个消息队列 */
void *sw_msgq_create(int max);

/* 销毁一个消息队列 */
void sw_msgq_destroy(void *hQueue);

/* 向一个消息队列添加消息 */
int sw_msgq_post(void *hQueue, int msg, unsigned long wParam, unsigned long lParam);

/* 从一个消息队列提取消息(超时设置的时间单位为: 毫秒, 并且当timeout = -1时表示无限等待) */
int sw_msgq_read(void *hQueue, int *msg, unsigned long *wParam, unsigned long *lParam, int timeout);

/* 删除一个消息队列里的所有消息 */
void sw_msgq_clear(void *hQueue);

/* 取得一个消息队列中现有的消息数目 */
int sw_msgq_get_num(void *hQueue);

/* 得到一个消息队列所允许的最大消息数目 */
int sw_msgq_get_max(void *hQueue);

#ifdef __cplusplus
}
#endif

#endif /* __SWMSGQ_H__ */
