You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by as...@apache.org on 2014/05/22 18:26:58 UTC
svn commit: r1596912 - in /qpid/proton/trunk/proton-c/src: ./ codec/
dispatcher/ engine/ message/ messenger/ object/ posix/ sasl/ ssl/
Author: astitcher
Date: Thu May 22 16:26:57 2014
New Revision: 1596912
URL: http://svn.apache.org/r1596912
Log:
PROTON-585: Rearrange structures (where possible) to remove padding holes
Modified:
qpid/proton/trunk/proton-c/src/codec/data.h
qpid/proton/trunk/proton-c/src/dispatcher/dispatcher.h
qpid/proton/trunk/proton-c/src/engine/engine-internal.h
qpid/proton/trunk/proton-c/src/engine/event.c
qpid/proton/trunk/proton-c/src/error.c
qpid/proton/trunk/proton-c/src/message/message.c
qpid/proton/trunk/proton-c/src/messenger/messenger.c
qpid/proton/trunk/proton-c/src/messenger/store.c
qpid/proton/trunk/proton-c/src/object/object.c
qpid/proton/trunk/proton-c/src/parser.c
qpid/proton/trunk/proton-c/src/posix/driver.c
qpid/proton/trunk/proton-c/src/sasl/sasl.c
qpid/proton/trunk/proton-c/src/ssl/openssl.c
Modified: qpid/proton/trunk/proton-c/src/codec/data.h
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/codec/data.h?rev=1596912&r1=1596911&r2=1596912&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/codec/data.h (original)
+++ qpid/proton/trunk/proton-c/src/codec/data.h Thu May 22 16:26:57 2014
@@ -30,35 +30,35 @@
typedef uint16_t pni_nid_t;
typedef struct {
+ char *start;
+ size_t data_offset;
+ size_t data_size;
+ pn_atom_t atom;
+ pn_type_t type;
pni_nid_t next;
pni_nid_t prev;
pni_nid_t down;
pni_nid_t parent;
pni_nid_t children;
- pn_atom_t atom;
// for arrays
bool described;
- pn_type_t type;
bool data;
- size_t data_offset;
- size_t data_size;
- char *start;
bool small;
} pni_node_t;
struct pn_data_t {
- pni_nid_t capacity;
- pni_nid_t size;
pni_node_t *nodes;
pn_buffer_t *buf;
- pni_nid_t parent;
- pni_nid_t current;
- pni_nid_t base_parent;
- pni_nid_t base_current;
pn_decoder_t *decoder;
pn_encoder_t *encoder;
pn_error_t *error;
pn_string_t *str;
+ pni_nid_t capacity;
+ pni_nid_t size;
+ pni_nid_t parent;
+ pni_nid_t current;
+ pni_nid_t base_parent;
+ pni_nid_t base_current;
};
pni_node_t *pn_data_node(pn_data_t *data, pni_nid_t nd);
Modified: qpid/proton/trunk/proton-c/src/dispatcher/dispatcher.h
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/dispatcher/dispatcher.h?rev=1596912&r1=1596911&r2=1596912&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/dispatcher/dispatcher.h (original)
+++ qpid/proton/trunk/proton-c/src/dispatcher/dispatcher.h Thu May 22 16:26:57 2014
@@ -38,12 +38,8 @@ typedef int (pn_action_t)(pn_dispatcher_
struct pn_dispatcher_t {
pn_action_t *actions[256];
- uint8_t frame_type;
- pn_trace_t trace;
pn_buffer_t *input;
size_t fragment;
- uint16_t channel;
- uint8_t code;
pn_data_t *args;
const char *payload;
size_t size;
@@ -56,11 +52,15 @@ struct pn_dispatcher_t {
size_t available; /* number of raw bytes pending output */
char *output;
pn_transport_t *transport;
- bool halt;
- bool batch;
uint64_t output_frames_ct;
uint64_t input_frames_ct;
pn_string_t *scratch;
+ pn_trace_t trace;
+ uint16_t channel;
+ uint8_t frame_type;
+ uint8_t code;
+ bool halt;
+ bool batch;
};
pn_dispatcher_t *pn_dispatcher(uint8_t frame_type, pn_transport_t *transport);
Modified: qpid/proton/trunk/proton-c/src/engine/engine-internal.h
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/engine/engine-internal.h?rev=1596912&r1=1596911&r2=1596912&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/engine/engine-internal.h (original)
+++ qpid/proton/trunk/proton-c/src/engine/engine-internal.h Thu May 22 16:26:57 2014
@@ -111,21 +111,14 @@ typedef struct pn_io_layer_t {
} pn_io_layer_t;
struct pn_transport_t {
- bool freed;
pn_tracer_t tracer;
size_t header_count;
pn_sasl_t *sasl;
pn_ssl_t *ssl;
pn_connection_t *connection; // reference counted
pn_dispatcher_t *disp;
- bool open_sent;
- bool open_rcvd;
- bool close_sent;
- bool close_rcvd;
char *remote_container;
char *remote_hostname;
- uint16_t channel_max;
- uint16_t remote_channel_max;
pn_data_t *remote_offered_capabilities;
pn_data_t *remote_desired_capabilities;
pn_data_t *remote_properties;
@@ -144,11 +137,11 @@ struct pn_transport_t {
/* dead remote detection */
pn_millis_t local_idle_timeout;
+ pn_millis_t remote_idle_timeout;
pn_timestamp_t dead_remote_deadline;
uint64_t last_bytes_input;
/* keepalive */
- pn_millis_t remote_idle_timeout;
pn_timestamp_t keepalive_deadline;
uint64_t last_bytes_output;
@@ -166,14 +159,22 @@ struct pn_transport_t {
size_t output_pending;
char *output_buf;
+ void *context;
+
/* input from peer */
size_t input_size;
size_t input_pending;
char *input_buf;
+
+ uint16_t channel_max;
+ uint16_t remote_channel_max;
+ bool freed;
+ bool open_sent;
+ bool open_rcvd;
+ bool close_sent;
+ bool close_rcvd;
bool tail_closed; // input stream closed by driver
bool head_closed;
-
- void *context;
};
struct pn_connection_t {
@@ -211,80 +212,80 @@ struct pn_session_t {
};
struct pn_terminus_t {
- pn_terminus_type_t type;
pn_string_t *address;
- pn_durability_t durability;
- pn_expiry_policy_t expiry_policy;
- pn_seconds_t timeout;
- bool dynamic;
- pn_distribution_mode_t distribution_mode;
pn_data_t *properties;
pn_data_t *capabilities;
pn_data_t *outcomes;
pn_data_t *filter;
+ pn_durability_t durability;
+ pn_expiry_policy_t expiry_policy;
+ pn_seconds_t timeout;
+ pn_terminus_type_t type;
+ pn_distribution_mode_t distribution_mode;
+ bool dynamic;
};
struct pn_link_t {
pn_endpoint_t endpoint;
- pn_string_t *name;
- pn_session_t *session; // reference counted
pn_terminus_t source;
pn_terminus_t target;
pn_terminus_t remote_source;
pn_terminus_t remote_target;
+ pn_link_state_t state;
+ pn_string_t *name;
+ pn_session_t *session; // reference counted
pn_delivery_t *unsettled_head;
pn_delivery_t *unsettled_tail;
pn_delivery_t *current;
pn_delivery_t *settled_head;
pn_delivery_t *settled_tail;
- uint8_t snd_settle_mode;
- uint8_t rcv_settle_mode;
- uint8_t remote_snd_settle_mode;
- uint8_t remote_rcv_settle_mode;
+ void *context;
size_t unsettled_count;
pn_sequence_t available;
pn_sequence_t credit;
pn_sequence_t queued;
+ int drained; // number of drained credits
+ uint8_t snd_settle_mode;
+ uint8_t rcv_settle_mode;
+ uint8_t remote_snd_settle_mode;
+ uint8_t remote_rcv_settle_mode;
bool drain_flag_mode; // receiver only
bool drain;
- int drained; // number of drained credits
- void *context;
- pn_link_state_t state;
};
struct pn_disposition_t {
+ pn_condition_t condition;
uint64_t type;
pn_data_t *data;
pn_data_t *annotations;
- pn_condition_t condition;
- uint32_t section_number;
uint64_t section_offset;
+ uint32_t section_number;
bool failed;
bool undeliverable;
bool settled;
};
struct pn_delivery_t {
- pn_link_t *link; // reference counted
- pn_buffer_t *tag;
pn_disposition_t local;
pn_disposition_t remote;
- bool updated;
- bool settled; // tracks whether we're in the unsettled list or not
+ pn_link_t *link; // reference counted
+ pn_buffer_t *tag;
pn_delivery_t *unsettled_next;
pn_delivery_t *unsettled_prev;
pn_delivery_t *settled_next;
pn_delivery_t *settled_prev;
pn_delivery_t *work_next;
pn_delivery_t *work_prev;
- bool work;
pn_delivery_t *tpwork_next;
pn_delivery_t *tpwork_prev;
- bool tpwork;
+ pn_delivery_state_t state;
pn_buffer_t *bytes;
- bool done;
void *context;
- pn_delivery_state_t state;
+ bool updated;
+ bool settled; // tracks whether we're in the unsettled list or not
+ bool work;
+ bool tpwork;
+ bool done;
};
#define PN_SET_LOCAL(OLD, NEW) \
Modified: qpid/proton/trunk/proton-c/src/engine/event.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/engine/event.c?rev=1596912&r1=1596911&r2=1596912&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/engine/event.c (original)
+++ qpid/proton/trunk/proton-c/src/engine/event.c Thu May 22 16:26:57 2014
@@ -9,13 +9,13 @@ struct pn_collector_t {
};
struct pn_event_t {
- pn_event_type_t type;
pn_connection_t *connection;
pn_session_t *session;
pn_link_t *link;
pn_delivery_t *delivery;
pn_transport_t *transport;
pn_event_t *next;
+ pn_event_type_t type;
};
static void pn_collector_initialize(void *obj)
Modified: qpid/proton/trunk/proton-c/src/error.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/error.c?rev=1596912&r1=1596911&r2=1596912&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/error.c (original)
+++ qpid/proton/trunk/proton-c/src/error.c Thu May 22 16:26:57 2014
@@ -27,9 +27,9 @@
#include "platform.h"
struct pn_error_t {
- int code;
char *text;
pn_error_t *root;
+ int code;
};
pn_error_t *pn_error()
Modified: qpid/proton/trunk/proton-c/src/message/message.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/message/message.c?rev=1596912&r1=1596911&r2=1596912&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/message/message.c (original)
+++ qpid/proton/trunk/proton-c/src/message/message.c Thu May 22 16:26:57 2014
@@ -49,11 +49,8 @@ ssize_t pn_message_data(char *dst, size_
// message
struct pn_message_t {
- bool durable;
- uint8_t priority;
- pn_millis_t ttl;
- bool first_acquirer;
- uint32_t delivery_count;
+ pn_timestamp_t expiry_time;
+ pn_timestamp_t creation_time;
pn_data_t *id;
pn_string_t *user_id;
pn_string_t *address;
@@ -62,22 +59,28 @@ struct pn_message_t {
pn_data_t *correlation_id;
pn_string_t *content_type;
pn_string_t *content_encoding;
- pn_timestamp_t expiry_time;
- pn_timestamp_t creation_time;
pn_string_t *group_id;
- pn_sequence_t group_sequence;
pn_string_t *reply_to_group_id;
- bool inferred;
pn_data_t *data;
pn_data_t *instructions;
pn_data_t *annotations;
pn_data_t *properties;
pn_data_t *body;
- pn_format_t format;
pn_parser_t *parser;
pn_error_t *error;
+
+ pn_format_t format;
+ pn_sequence_t group_sequence;
+ pn_millis_t ttl;
+ uint32_t delivery_count;
+
+ uint8_t priority;
+
+ bool durable;
+ bool first_acquirer;
+ bool inferred;
};
void pn_message_finalize(void *obj)
Modified: qpid/proton/trunk/proton-c/src/messenger/messenger.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/messenger/messenger.c?rev=1596912&r1=1596911&r2=1596912&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/messenger/messenger.c (original)
+++ qpid/proton/trunk/proton-c/src/messenger/messenger.c Thu May 22 16:26:57 2014
@@ -60,30 +60,20 @@ typedef enum {
} pn_link_credit_mode_t;
struct pn_messenger_t {
+ pn_address_t address;
char *name;
char *certificate;
char *private_key;
char *password;
char *trusted_certificates;
- int timeout;
- bool blocking;
- bool passive;
pn_io_t *io;
pn_list_t *pending; // pending selectables
pn_selectable_t *interruptor;
- bool interrupted;
pn_socket_t ctrl[2];
pn_list_t *listeners;
pn_list_t *connections;
pn_selector_t *selector;
pn_collector_t *collector;
- int send_threshold;
- pn_link_credit_mode_t credit_mode;
- int credit_batch; // when LINK_CREDIT_AUTO
- int credit; // available
- int distributed; // credit
- int receivers; // # receiver links
- int draining; // # links in drain state
pn_list_t *credited;
pn_list_t *blocked;
pn_timestamp_t next_drain;
@@ -95,14 +85,24 @@ struct pn_messenger_t {
pn_error_t *error;
pn_transform_t *routes;
pn_transform_t *rewrites;
- pn_address_t address;
pn_tracker_t outgoing_tracker;
pn_tracker_t incoming_tracker;
pn_string_t *original;
pn_string_t *rewritten;
pn_string_t *domain;
- bool worked;
+ int timeout;
+ int send_threshold;
+ pn_link_credit_mode_t credit_mode;
+ int credit_batch; // when LINK_CREDIT_AUTO
+ int credit; // available
+ int distributed; // credit
+ int receivers; // # receiver links
+ int draining; // # links in drain state
int connection_error;
+ bool blocking;
+ bool passive;
+ bool interrupted;
+ bool worked;
};
#define CTX_HEAD \
Modified: qpid/proton/trunk/proton-c/src/messenger/store.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/messenger/store.c?rev=1596912&r1=1596911&r2=1596912&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/messenger/store.c (original)
+++ qpid/proton/trunk/proton-c/src/messenger/store.c Thu May 22 16:26:57 2014
@@ -34,14 +34,14 @@
typedef struct pni_stream_t pni_stream_t;
struct pni_store_t {
- size_t size;
pni_stream_t *streams;
pni_entry_t *store_head;
pni_entry_t *store_tail;
+ pn_hash_t *tracked;
+ size_t size;
int window;
pn_sequence_t lwm;
pn_sequence_t hwm;
- pn_hash_t *tracked;
};
struct pni_stream_t {
@@ -53,17 +53,17 @@ struct pni_stream_t {
};
struct pni_entry_t {
- pn_sequence_t id;
pni_stream_t *stream;
- bool free;
pni_entry_t *stream_next;
pni_entry_t *stream_prev;
pni_entry_t *store_next;
pni_entry_t *store_prev;
- pn_status_t status;
pn_buffer_t *bytes;
pn_delivery_t *delivery;
void *context;
+ pn_status_t status;
+ pn_sequence_t id;
+ bool free;
};
void pni_entry_finalize(void *object)
Modified: qpid/proton/trunk/proton-c/src/object/object.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/object/object.c?rev=1596912&r1=1596911&r2=1596912&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/object/object.c (original)
+++ qpid/proton/trunk/proton-c/src/object/object.c Thu May 22 16:26:57 2014
@@ -380,9 +380,9 @@ struct pn_map_t {
size_t capacity;
size_t addressable;
size_t size;
- float load_factor;
uintptr_t (*hashcode)(void *key);
bool (*equals)(void *a, void *b);
+ float load_factor;
bool count_keys;
bool count_values;
};
Modified: qpid/proton/trunk/proton-c/src/parser.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/parser.c?rev=1596912&r1=1596911&r2=1596912&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/parser.c (original)
+++ qpid/proton/trunk/proton-c/src/parser.c Thu May 22 16:26:57 2014
@@ -29,10 +29,10 @@
struct pn_parser_t {
pn_scanner_t *scanner;
- int error_code;
char *atoms;
size_t size;
size_t capacity;
+ int error_code;
};
pn_parser_t *pn_parser()
Modified: qpid/proton/trunk/proton-c/src/posix/driver.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/posix/driver.c?rev=1596912&r1=1596911&r2=1596912&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/posix/driver.c (original)
+++ qpid/proton/trunk/proton-c/src/posix/driver.c Thu May 22 16:26:57 2014
@@ -64,19 +64,19 @@ struct pn_driver_t {
struct pollfd *fds;
size_t nfds;
int ctrl[2]; //pipe for updating selectable status
- pn_trace_t trace;
pn_timestamp_t wakeup;
+ pn_trace_t trace;
};
struct pn_listener_t {
pn_driver_t *driver;
pn_listener_t *listener_next;
pn_listener_t *listener_prev;
+ void *context;
int idx;
- bool pending;
int fd;
+ bool pending;
bool closed;
- void *context;
};
#define PN_NAME_MAX (256)
@@ -86,22 +86,22 @@ struct pn_connector_t {
pn_connector_t *connector_next;
pn_connector_t *connector_prev;
char name[PN_NAME_MAX];
+ pn_timestamp_t wakeup;
+ pn_connection_t *connection;
+ pn_transport_t *transport;
+ pn_sasl_t *sasl;
+ pn_listener_t *listener;
+ void *context;
int idx;
- bool pending_tick;
- bool pending_read;
- bool pending_write;
int fd;
int status;
pn_trace_t trace;
+ bool pending_tick;
+ bool pending_read;
+ bool pending_write;
bool closed;
- pn_timestamp_t wakeup;
- pn_connection_t *connection;
- pn_transport_t *transport;
- pn_sasl_t *sasl;
bool input_done;
bool output_done;
- pn_listener_t *listener;
- void *context;
};
/* Impls */
Modified: qpid/proton/trunk/proton-c/src/sasl/sasl.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/sasl/sasl.c?rev=1596912&r1=1596911&r2=1596912&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/sasl/sasl.c (original)
+++ qpid/proton/trunk/proton-c/src/sasl/sasl.c Thu May 22 16:26:57 2014
@@ -35,15 +35,15 @@
struct pn_sasl_t {
pn_transport_t *transport;
pn_io_layer_t *io_layer;
- size_t header_count;
pn_dispatcher_t *disp;
- bool client;
- bool configured;
char *mechanisms;
char *remote_mechanisms;
pn_buffer_t *send_data;
pn_buffer_t *recv_data;
+ size_t header_count;
pn_sasl_outcome_t outcome;
+ bool client;
+ bool configured;
bool sent_init;
bool rcvd_init;
bool sent_done;
Modified: qpid/proton/trunk/proton-c/src/ssl/openssl.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/ssl/openssl.c?rev=1596912&r1=1596911&r2=1596912&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/ssl/openssl.c (original)
+++ qpid/proton/trunk/proton-c/src/ssl/openssl.c Thu May 22 16:26:57 2014
@@ -49,23 +49,25 @@ typedef enum { UNKNOWN_CONNECTION, SSL_C
typedef struct pn_ssl_session_t pn_ssl_session_t;
struct pn_ssl_domain_t {
- int ref_count;
SSL_CTX *ctx;
- pn_ssl_mode_t mode;
- bool has_ca_db; // true when CA database configured
- bool has_certificate; // true when certificate configured
char *keyfile_pw;
// settings used for all connections
char *trusted_CAs;
- pn_ssl_verify_mode_t verify_mode;
- bool allow_unsecured;
// session cache
pn_ssl_session_t *ssn_cache_head;
pn_ssl_session_t *ssn_cache_tail;
+
+ int ref_count;
+ pn_ssl_mode_t mode;
+ pn_ssl_verify_mode_t verify_mode;
+
+ bool has_ca_db; // true when CA database configured
+ bool has_certificate; // true when certificate configured
+ bool allow_unsecured;
};
@@ -81,24 +83,25 @@ struct pn_ssl_t {
BIO *bio_ssl; // i/o from/to SSL socket layer
BIO *bio_ssl_io; // SSL "half" of network-facing BIO
BIO *bio_net_io; // socket-side "half" of network-facing BIO
- bool ssl_shutdown; // BIO_ssl_shutdown() called on socket.
- bool ssl_closed; // shutdown complete, or SSL error
- ssize_t app_input_closed; // error code returned by upper layer process input
- ssize_t app_output_closed; // error code returned by upper layer process output
-
- bool read_blocked; // SSL blocked until more network data is read
- bool write_blocked; // SSL blocked until data is written to network
-
// buffers for holding I/O from "applications" above SSL
#define APP_BUF_SIZE (4*1024)
char *outbuf;
+ char *inbuf;
+
+ ssize_t app_input_closed; // error code returned by upper layer process input
+ ssize_t app_output_closed; // error code returned by upper layer process output
+
size_t out_size;
size_t out_count;
- char *inbuf;
size_t in_size;
size_t in_count;
pn_trace_t trace;
+
+ bool ssl_shutdown; // BIO_ssl_shutdown() called on socket.
+ bool ssl_closed; // shutdown complete, or SSL error
+ bool read_blocked; // SSL blocked until more network data is read
+ bool write_blocked; // SSL blocked until data is written to network
};
struct pn_ssl_session_t {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org