| #ifndef __dispatch_amqp_h__ |
| #define __dispatch_amqp_h__ 1 |
| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| /**@file |
| * AMQP constants. |
| * |
| *@defgroup amqp amqp |
| * |
| * AMQP related constant definitions. |
| */ |
| /// @{ |
| |
| |
| /** |
| * AMQP Constants |
| */ |
| typedef enum { |
| QD_AMQP_MIN_MAX_FRAME_SIZE = 512, |
| QD_AMQP_PORT_INT = 5672, |
| QD_AMQPS_PORT_INT = 5671 |
| } qd_amqp_constants_t; |
| |
| extern const char * const QD_AMQP_PORT_STR; |
| extern const char * const QD_AMQPS_PORT_STR; |
| |
| /* Returns -1 if string is not a number or recognized symbolic port name */ |
| int qd_port_int(const char* port_str); |
| |
| /** |
| * AMQP Performative Tags |
| */ |
| typedef enum { |
| QD_PERFORMATIVE_HEADER = 0x70, |
| QD_PERFORMATIVE_DELIVERY_ANNOTATIONS = 0x71, |
| QD_PERFORMATIVE_MESSAGE_ANNOTATIONS = 0x72 , |
| QD_PERFORMATIVE_PROPERTIES = 0x73, |
| QD_PERFORMATIVE_APPLICATION_PROPERTIES = 0x74, |
| QD_PERFORMATIVE_BODY_DATA = 0x75, |
| QD_PERFORMATIVE_BODY_AMQP_SEQUENCE = 0x76, |
| QD_PERFORMATIVE_BODY_AMQP_VALUE = 0x77, |
| QD_PERFORMATIVE_FOOTER = 0x78, |
| } qd_amqp_performative_t; |
| |
| /** |
| * AMQP Type Tags |
| */ |
| typedef enum { |
| QD_AMQP_NULL = 0x40, |
| QD_AMQP_BOOLEAN = 0x56, |
| QD_AMQP_TRUE = 0x41, |
| QD_AMQP_FALSE = 0x42, |
| QD_AMQP_UBYTE = 0x50, |
| QD_AMQP_USHORT = 0x60, |
| QD_AMQP_UINT = 0x70, |
| QD_AMQP_SMALLUINT = 0x52, |
| QD_AMQP_UINT0 = 0x43, |
| QD_AMQP_ULONG = 0x80, |
| QD_AMQP_SMALLULONG = 0x53, |
| QD_AMQP_ULONG0 = 0x44, |
| QD_AMQP_BYTE = 0x51, |
| QD_AMQP_SHORT = 0x61, |
| QD_AMQP_INT = 0x71, |
| QD_AMQP_SMALLINT = 0x54, |
| QD_AMQP_LONG = 0x81, |
| QD_AMQP_SMALLLONG = 0x55, |
| QD_AMQP_FLOAT = 0x72, |
| QD_AMQP_DOUBLE = 0x82, |
| QD_AMQP_DECIMAL32 = 0x74, |
| QD_AMQP_DECIMAL64 = 0x84, |
| QD_AMQP_DECIMAL128 = 0x94, |
| QD_AMQP_UTF32 = 0x73, |
| QD_AMQP_TIMESTAMP = 0x83, |
| QD_AMQP_UUID = 0x98, |
| QD_AMQP_VBIN8 = 0xa0, |
| QD_AMQP_VBIN32 = 0xb0, |
| QD_AMQP_STR8_UTF8 = 0xa1, |
| QD_AMQP_STR32_UTF8 = 0xb1, |
| QD_AMQP_SYM8 = 0xa3, |
| QD_AMQP_SYM32 = 0xb3, |
| QD_AMQP_LIST0 = 0x45, |
| QD_AMQP_LIST8 = 0xc0, |
| QD_AMQP_LIST32 = 0xd0, |
| QD_AMQP_MAP8 = 0xc1, |
| QD_AMQP_MAP32 = 0xd1, |
| QD_AMQP_ARRAY8 = 0xe0, |
| QD_AMQP_ARRAY32 = 0xf0, |
| } qd_amqp_type_t; |
| |
| /** @name Message Annotation Headers */ |
| /// @{ |
| extern const char * const QD_MA_PREFIX; |
| extern const char * const QD_MA_INGRESS; ///< Ingress Router |
| extern const char * const QD_MA_TRACE; ///< Trace |
| extern const char * const QD_MA_TO; ///< To-Override |
| extern const char * const QD_MA_PHASE; ///< Phase for override address |
| extern const char * const QD_MA_CLASS; ///< Message-Class |
| extern const char * const QD_MA_STREAM; ///< Indicate streaming message |
| |
| #define QD_MA_PREFIX_LEN (9) |
| #define QD_MA_INGRESS_LEN (16) |
| #define QD_MA_TRACE_LEN (14) |
| #define QD_MA_TO_LEN (11) |
| #define QD_MA_PHASE_LEN (14) |
| #define QD_MA_CLASS_LEN (14) |
| #define QD_MA_STREAM_LEN (15) |
| |
| extern const int QD_MA_MAX_KEY_LEN; ///< strlen of longest key name |
| extern const int QD_MA_N_KEYS; ///< number of router annotation keys |
| extern const int QD_MA_FILTER_LEN; ///< size of annotation filter buffer |
| /// @} |
| |
| /** @name Container Capabilities */ |
| /// @{ |
| extern const char * const QD_CAPABILITY_ANONYMOUS_RELAY; |
| extern const char * const QD_CAPABILITY_STREAMING_LINKS; |
| /// @} |
| |
| /** @name Link Terminus Capabilities */ |
| /// @{ |
| extern const char * const QD_CAPABILITY_ROUTER_CONTROL; |
| extern const char * const QD_CAPABILITY_ROUTER_DATA; |
| extern const char * const QD_CAPABILITY_EDGE_DOWNLINK; |
| extern const char * const QD_CAPABILITY_WAYPOINT_DEFAULT; |
| extern const char * const QD_CAPABILITY_WAYPOINT1; |
| extern const char * const QD_CAPABILITY_WAYPOINT2; |
| extern const char * const QD_CAPABILITY_WAYPOINT3; |
| extern const char * const QD_CAPABILITY_WAYPOINT4; |
| extern const char * const QD_CAPABILITY_WAYPOINT5; |
| extern const char * const QD_CAPABILITY_WAYPOINT6; |
| extern const char * const QD_CAPABILITY_WAYPOINT7; |
| extern const char * const QD_CAPABILITY_WAYPOINT8; |
| extern const char * const QD_CAPABILITY_WAYPOINT9; |
| extern const char * const QD_CAPABILITY_FALLBACK; |
| /// @} |
| |
| /** @name Dynamic Node Properties */ |
| /// @{ |
| extern const char * const QD_DYNAMIC_NODE_PROPERTY_ADDRESS; ///< Address for routing dynamic sources |
| /// @} |
| |
| /** @name Connection Properties */ |
| /// @{ |
| extern const char * const QD_CONNECTION_PROPERTY_PRODUCT_KEY; |
| extern const char * const QD_CONNECTION_PROPERTY_PRODUCT_VALUE; |
| extern const char * const QD_CONNECTION_PROPERTY_VERSION_KEY; |
| extern const char * const QD_CONNECTION_PROPERTY_COST_KEY; |
| extern const char * const QD_CONNECTION_PROPERTY_CONN_ID; |
| extern const char * const QD_CONNECTION_PROPERTY_FAILOVER_LIST_KEY; |
| extern const char * const QD_CONNECTION_PROPERTY_FAILOVER_NETHOST_KEY; |
| extern const char * const QD_CONNECTION_PROPERTY_FAILOVER_PORT_KEY; |
| extern const char * const QD_CONNECTION_PROPERTY_FAILOVER_SCHEME_KEY; |
| extern const char * const QD_CONNECTION_PROPERTY_FAILOVER_HOSTNAME_KEY; |
| /// @} |
| |
| /** @name Terminus Addresses */ |
| /// @{ |
| extern const char * const QD_TERMINUS_EDGE_ADDRESS_TRACKING; |
| extern const char * const QD_TERMINUS_ADDRESS_LOOKUP; |
| /// @} |
| |
| /** @name AMQP error codes. */ |
| /// @{ |
| /** AMQP management error status code and string description (HTTP-style) */ |
| typedef struct qd_amqp_error_t { int status; const char* description; } qd_amqp_error_t; |
| extern const qd_amqp_error_t QD_AMQP_OK; |
| extern const qd_amqp_error_t QD_AMQP_CREATED; |
| extern const qd_amqp_error_t QD_AMQP_NO_CONTENT; |
| extern const qd_amqp_error_t QD_AMQP_FORBIDDEN; |
| extern const qd_amqp_error_t QD_AMQP_BAD_REQUEST; |
| extern const qd_amqp_error_t QD_AMQP_NOT_FOUND; |
| extern const qd_amqp_error_t QD_AMQP_NOT_IMPLEMENTED; |
| /// @} |
| |
| /** @name Standard AMQP error condition names. */ |
| /// @{ |
| extern const char * const QD_AMQP_COND_INTERNAL_ERROR; |
| extern const char * const QD_AMQP_COND_NOT_FOUND; |
| extern const char * const QD_AMQP_COND_UNAUTHORIZED_ACCESS; |
| extern const char * const QD_AMQP_COND_DECODE_ERROR; |
| extern const char * const QD_AMQP_COND_RESOURCE_LIMIT_EXCEEDED; |
| extern const char * const QD_AMQP_COND_NOT_ALLOWED; |
| extern const char * const QD_AMQP_COND_INVALID_FIELD; |
| extern const char * const QD_AMQP_COND_NOT_IMPLEMENTED; |
| extern const char * const QD_AMQP_COND_RESOURCE_LOCKED; |
| extern const char * const QD_AMQP_COND_PRECONDITION_FAILED; |
| extern const char * const QD_AMQP_COND_RESOURCE_DELETED; |
| extern const char * const QD_AMQP_COND_ILLEGAL_STATE; |
| extern const char * const QD_AMQP_COND_FRAME_SIZE_TOO_SMALL; |
| |
| extern const char * const QD_AMQP_COND_CONNECTION_FORCED; |
| |
| extern const char * const QD_AMQP_COND_MESSAGE_SIZE_EXCEEDED; |
| /// @}; |
| |
| /** @name AMQP link endpoint role. */ |
| /// @{ |
| #define QD_AMQP_LINK_ROLE_SENDER false |
| #define QD_AMQP_LINK_ROLE_RECEIVER true |
| /// @}; |
| |
| #endif |