⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ais_message.h

📁 linux集群服务器软件代码包
💻 H
字号:
#ifndef _AIS_MESSAGE_H_#define _AIS_MESSAGE_H_#include "ais_base.h"/* Chapter 9 */#ifdef __CPLUSPLUSextern "C" {#endiftypedef OPAQUE_TYPE SaMsgHandleT;typedef OPAQUE_TYPE SaMsgMessageHandleT;typedef OPAQUE_TYPE SaMsgQueueHandleT;typedef OPAQUE_TYPE SaMsgSenderIdT;#define SA_MSG_MESSAGE_DELIVERED_ACK 0x1typedef SaUint32T SaMsgAckFlagsT;#define SA_MSG_QUEUE_PERSISTENT 0x1#define SA_MSG_QUEUE_MIGRATABLE 0x2typedef SaUint32T SaMsgQueueCreationFlagsT;#define SA_MSG_MESSAGE_HIGHEST_PRIORITY 0#define SA_MSG_MESSAGE_LOWEST_PRIORITY 3typedef struct {    SaMsgQueueCreationFlagsT creationFlags;    SaSizeT size[SA_MSG_MESSAGE_LOWEST_PRIORITY + 1];    SaTimeT retentionTime;} SaMsgQueueCreationAttributesT;#define SA_MSG_QUEUE_CREATE 0x1#define SA_MSG_QUEUE_RECEIVE_CALLBACK 0x2#define SA_MSG_QUEUE_SELECTION_OBJECT_SET 0x4#define SA_MSG_QUEUE_EMPTY 0x8typedef SaUint32T SaMsgQueueOpenFlagsT;typedef enum {    SA_MSG_QUEUE_UNAVAILABLE = 1,    SA_MSG_QUEUE_AVAILABLE = 2} SaMsgQueueSendingStateT;typedef struct {    SaUint32T queueSize;    SaSizeT queueUsed;    SaUint32T numberOfMessages;} SaMsgQueueUsageT;typedef struct {    SaMsgQueueSendingStateT sendingState;    SaMsgQueueCreationFlagsT creationFlags;    SaMsgQueueOpenFlagsT openFlags;    SaTimeT retentionTime;    SaTimeT closeTime;    SaSizeT headerLength;    SaMsgQueueUsageT saMsgQueueUsage[SA_MSG_MESSAGE_LOWEST_PRIORITY + 1];} SaMsgQueueStatusT;typedef enum {    SA_MSG_QUEUE_GROUP_ROUND_ROBIN = 1} SaMsgQueueGroupPolicyT;typedef enum {    SA_MSG_QUEUE_GROUP_NO_CHANGE = 1,    SA_MSG_QUEUE_GROUP_ADDED = 2,    SA_MSG_QUEUE_GROUP_REMOVED = 3,    SA_MSG_QUEUE_GROUP_STATE_CHANGED = 4} SaMsgQueueGroupChangesT;typedef struct {    SaNameT queueName;    SaMsgQueueStatusT queueStatus;} SaMsgQueueGroupMemberT;typedef struct {    SaMsgQueueGroupChangesT change;    SaMsgQueueGroupMemberT member;} SaMsgQueueGroupNotificationT;typedef struct {    SaUint32T numberOfItems;    SaMsgQueueGroupNotificationT *notification;} SaMsgQueueGroupNotificationBufferT;typedef struct {    SaSizeT type;    SaSizeT version;    SaSizeT size;    void *data;    SaUint8T priority;} SaMsgMessageT;typedef struct {    SaTimeT sendTime;    SaNameT senderName;    SaBoolT sendReceive;    SaMsgSenderIdT senderId;} SaMsgMessageInfoT;typedef void(*SaMsgQueueOpenCallbackT)(SaInvocationT invocation,                           const SaMsgQueueHandleT *queueHandle,                           SaErrorT error);typedef void (*SaMsgQueueGroupTrackCallbackT)(const SaNameT *queueGroupName,                                 const SaMsgQueueGroupNotificationBufferT                                      *notificationBuffer,                                 SaMsgQueueGroupPolicyT queueGroupPolicy,                                 SaUint32T numberOfMembers,                                 SaErrorT error);typedef void (*SaMsgMessageDeliveredCallbackT)(SaInvocationT invocation,                                  SaErrorT error);typedef void (*SaMsgMessageReceivedCallbackT)(const SaMsgQueueHandleT *queueHandle);typedef struct {    const SaMsgQueueOpenCallbackT saMsgQueueOpenCallback;    const SaMsgQueueGroupTrackCallbackT saMsgQueueGroupTrackCallback;    const SaMsgMessageDeliveredCallbackT saMsgMessageDeliveredCallback;    const SaMsgMessageReceivedCallbackT saMsgMessageReceivedCallback; } SaMsgCallbacksT;    SaErrorT saMsgInitialize(SaMsgHandleT *msgHandle, const SaMsgCallbacksT *msgCallbacks,                const SaVersionT *version);    SaErrorT saMsgSelectionObjectGet(const SaMsgHandleT *msgHandle,                        SaSelectionObjectT *selectionObject);    SaErrorT saMsgDispatch(const SaMsgHandleT *msgHandle, SaDispatchFlagsT dispatchFlags);    SaErrorT saMsgFinalize(SaMsgHandleT *msgHandle);    SaErrorT saMsgQueueOpen(const SaMsgHandleT *msgHandle,               const SaNameT *queueName,               const SaMsgQueueCreationAttributesT *creationAttributes,               SaMsgQueueOpenFlagsT openFlags,               SaTimeT timeout,               SaMsgQueueHandleT *queueHandle);    SaErrorT saMsgQueueOpenAsync(const SaMsgHandleT *msgHandle,                    SaInvocationT invocation,                    const SaNameT *queueName,                    const SaMsgQueueCreationAttributesT *creationAttributes,                    SaMsgQueueOpenFlagsT openFlags);    SaErrorT saMsgQueueClose(SaMsgQueueHandleT *queueHandle);    SaErrorT saMsgQueueStatusGet(SaMsgHandleT *msgHandle,                    const SaNameT *queueName,                    SaMsgQueueStatusT *queueStatus);    SaErrorT saMsgQueueUnlink(SaMsgHandleT *msgHandle, const SaNameT *queueName);    SaErrorTsaMsgQueueGroupCreate(SaMsgHandleT *msgHandle,                      const SaNameT *queueGroupName,                      SaMsgQueueGroupPolicyT queueGroupPolicy);    SaErrorT saMsgQueueGroupDelete(SaMsgHandleT *msgHandle, const SaNameT *queueGroupName);    SaErrorT saMsgQueueGroupInsert(SaMsgHandleT *msgHandle,                      const SaNameT *queueGroupName,                      const SaNameT *queueName);    SaErrorT saMsgQueueGroupRemove(SaMsgHandleT *msgHandle,                      const SaNameT *queueGroupName,                      const SaNameT *queueName);    SaErrorT saMsgQueueGroupTrack(const SaMsgHandleT *msgHandle,                     const SaNameT *queueGroupName,                     SaUint8T trackFlags,                     SaMsgQueueGroupNotificationBufferT *notificationBuffer);    SaErrorT saMsgQueueGroupTrackStop(const SaMsgHandleT *msgHandle,                         const SaNameT *queueGroupName);    SaErrorT saMsgMessageSend(const SaMsgHandleT *msgHandle,                 const SaNameT *destination,                 const SaMsgMessageT *message,                 SaMsgAckFlagsT ackFlags,                 SaTimeT timeout);    SaErrorT saMsgMessageSendAsync(const SaMsgHandleT *msgHandle,                      SaInvocationT invocation,                      const SaNameT *destination,                      const SaMsgMessageT *message,                      SaMsgAckFlagsT ackFlags);    SaErrorTsaMsgMessageGet(const SaMsgQueueHandleT *queueHandle,                SaMsgMessageT *message,                SaMsgMessageInfoT *messageInfo,                SaTimeT timeout);    SaErrorT saMsgMessageReceivedGet(const SaMsgQueueHandleT *queueHandle,                        const SaMsgMessageHandleT *messageHandle,                        SaMsgMessageT *message,                        SaMsgMessageInfoT *messageInfo);    SaErrorT saMsgMessageCancel(const SaMsgQueueHandleT *queueHandle);    SaErrorT saMsgMessageSendReceive(SaMsgHandleT msgHandle,			const SaNameT *destination,                        const SaMsgMessageT *sendMessage,                        SaMsgMessageT *receiveMessage,			SaTimeT *replySendTime,                        SaTimeT timeout);    SaErrorT saMsgMessageReply(SaMsgHandleT msgHandle,		  const SaMsgMessageT *replyMessage,                  const SaMsgSenderIdT *senderId,                  SaTimeT timeout);    SaErrorT saMsgMessageReplyAsync(SaMsgHandleT msgHandle,                       SaInvocationT invocation,                       const SaMsgMessageT *replyMessage,		       const SaMsgSenderIdT *senderId,                       SaMsgAckFlagsT ackFlags);#ifdef __CPLUSPLUS}#endif#endif /* _AIS_MESSAGE_H_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -