You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kg...@apache.org on 2012/08/10 20:15:36 UTC
svn commit: r1371800 - in /qpid/proton/branches/driver_abstraction:
examples/mailbox/post examples/mailbox/server proton-c/src/driver.c
proton-c/src/driver_impl.h proton-c/src/drivers/openssl.c
proton-c/src/drivers/poll.c proton-c/src/drivers/select.c
Author: kgiusti
Date: Fri Aug 10 18:15:35 2012
New Revision: 1371800
URL: http://svn.apache.org/viewvc?rev=1371800&view=rev
Log:
checkpoint - still debugging...
Modified:
qpid/proton/branches/driver_abstraction/examples/mailbox/post
qpid/proton/branches/driver_abstraction/examples/mailbox/server
qpid/proton/branches/driver_abstraction/proton-c/src/driver.c
qpid/proton/branches/driver_abstraction/proton-c/src/driver_impl.h
qpid/proton/branches/driver_abstraction/proton-c/src/drivers/openssl.c
qpid/proton/branches/driver_abstraction/proton-c/src/drivers/poll.c
qpid/proton/branches/driver_abstraction/proton-c/src/drivers/select.c
Modified: qpid/proton/branches/driver_abstraction/examples/mailbox/post
URL: http://svn.apache.org/viewvc/qpid/proton/branches/driver_abstraction/examples/mailbox/post?rev=1371800&r1=1371799&r2=1371800&view=diff
==============================================================================
--- qpid/proton/branches/driver_abstraction/examples/mailbox/post (original)
+++ qpid/proton/branches/driver_abstraction/examples/mailbox/post Fri Aug 10 18:15:35 2012
@@ -109,6 +109,25 @@ class PostClient(object):
pn_link_open(self.link)
+ def teardown(self):
+ """ Perform a clean disconnect from the server, and release the
+ resources created in setup()
+ """
+ self.log("Shutting down the connection cleanly...")
+ pn_connection_close(self.conn)
+
+ # now wait for the connector to close
+ while not pn_connector_closed(self.cxtr):
+ self.wait()
+
+ #pn_sasl_free(self.sasl);
+ pn_link_free(self.link);
+ pn_session_free(self.ssn);
+ pn_connection_free(self.conn);
+ pn_connector_free(self.cxtr);
+ self.log("...Shutdown complete!")
+
+
def wait(self):
""" Wait for an event to process.
"""
@@ -214,14 +233,14 @@ def main():
sender.settle()
# done sending, now block until any pending deliveries are settled
+ sender.log("Done sending messages, waiting for deliveries to settle...");
while pn_unsettled(sender.link) > 0 and not sender.closed():
sender.wait()
sender.settle()
- # we're done, close and wait for the remote to close also
- pn_connection_close(sender.conn)
- while not (pn_connection_state(sender.conn) & PN_REMOTE_CLOSED):
- sender.wait()
+ # We're done - now clean up the connection:
+ sender.teardown()
+
return 0
Modified: qpid/proton/branches/driver_abstraction/examples/mailbox/server
URL: http://svn.apache.org/viewvc/qpid/proton/branches/driver_abstraction/examples/mailbox/server?rev=1371800&r1=1371799&r2=1371800&view=diff
==============================================================================
--- qpid/proton/branches/driver_abstraction/examples/mailbox/server (original)
+++ qpid/proton/branches/driver_abstraction/examples/mailbox/server Fri Aug 10 18:15:35 2012
@@ -36,7 +36,7 @@ class Options(object):
def __init__(self):
parser = OptionParser(usage="usage: %prog [options] <server-address>")
parser.add_option("-v", "--verbose",
- action="store_false", dest="verbose", default=True,
+ action="store_true", dest="verbose",
help="print status messages to stdout")
# SSL configuration
parser.add_option("--ssl-cert-file", type="str", metavar="<file>",
@@ -95,7 +95,7 @@ class MailboxServer(object):
self.require_encryption = require_encryption
self.mailboxes = {}
- self.verbose = False
+ self.logging = False
self.counter = 0
Modified: qpid/proton/branches/driver_abstraction/proton-c/src/driver.c
URL: http://svn.apache.org/viewvc/qpid/proton/branches/driver_abstraction/proton-c/src/driver.c?rev=1371800&r1=1371799&r2=1371800&view=diff
==============================================================================
--- qpid/proton/branches/driver_abstraction/proton-c/src/driver.c (original)
+++ qpid/proton/branches/driver_abstraction/proton-c/src/driver.c Fri Aug 10 18:15:35 2012
@@ -119,7 +119,7 @@ pn_listener_t *pn_listener_fd(pn_driver_
l->context = context;
l->ssl = NULL;
- pn_listener_impl_init(l);
+ pn_listener_poller_init(l);
pn_driver_add_listener(driver, l);
return l;
@@ -189,7 +189,7 @@ void pn_listener_free(pn_listener_t *l)
if (l->driver) pn_driver_remove_listener(l->driver, l);
pn_listener_free_ssl(l);
- pn_listener_impl_destroy(l);
+ pn_listener_poller_destroy(l);
free(l);
}
@@ -300,7 +300,7 @@ pn_connector_t *pn_connector_fd(pn_drive
c->listener = NULL;
c->ssl = NULL;
- pn_connector_impl_init(c);
+ pn_connector_poller_init(c);
pn_connector_trace(c, driver->trace);
@@ -373,7 +373,7 @@ void pn_connector_free(pn_connector_t *c
if (ctor->driver) pn_driver_remove_connector(ctor->driver, ctor);
- pn_connector_impl_destroy(ctor);
+ pn_connector_poller_destroy(ctor);
ctor->connection = NULL;
ctor->transport = NULL;
pn_sasl_free(ctor->sasl);
@@ -640,7 +640,7 @@ pn_driver_t *pn_driver()
perror("Can't create control pipe");
}
- pn_driver_impl_init(d);
+ pn_driver_poller_init(d);
return d;
}
@@ -661,7 +661,7 @@ void pn_driver_free(pn_driver_t *d)
while (d->listener_head)
pn_listener_free(d->listener_head);
- pn_driver_impl_destroy(d);
+ pn_driver_poller_destroy(d);
free(d);
}
@@ -677,7 +677,7 @@ void pn_driver_wait(pn_driver_t *d, int
{
// if SSL/TlS has data available, no need to wait for I/O
if (!pn_driver_ssl_data_ready(d)) {
- pn_driver_impl_wait(d, timeout);
+ pn_driver_poller_wait(d, timeout);
}
d->listener_next = d->listener_head;
d->connector_next = d->connector_head;
Modified: qpid/proton/branches/driver_abstraction/proton-c/src/driver_impl.h
URL: http://svn.apache.org/viewvc/qpid/proton/branches/driver_abstraction/proton-c/src/driver_impl.h?rev=1371800&r1=1371799&r2=1371800&view=diff
==============================================================================
--- qpid/proton/branches/driver_abstraction/proton-c/src/driver_impl.h (original)
+++ qpid/proton/branches/driver_abstraction/proton-c/src/driver_impl.h Fri Aug 10 18:15:35 2012
@@ -37,13 +37,12 @@ struct pn_driver_t {
int ctrl[2]; //pipe for updating selectable status
pn_trace_t trace;
- struct pn_driver_impl_t *impl;
+ struct pn_driver_poller_t *poller;
};
-int pn_driver_impl_init( struct pn_driver_t * );
-void pn_driver_impl_destroy( struct pn_driver_t * );
+int pn_driver_poller_init( struct pn_driver_t * );
+void pn_driver_poller_destroy( struct pn_driver_t * );
-struct pn_listener_ssl_impl_t;
struct pn_listener_t {
pn_driver_t *driver;
@@ -53,12 +52,12 @@ struct pn_listener_t {
int fd;
void *context;
- struct pn_listener_impl_t *impl;
- struct pn_listener_ssl_impl_t *ssl;
+ struct pn_listener_poller_t *poller;
+ struct pn_listener_ssl_t *ssl;
};
-int pn_listener_impl_init( struct pn_listener_t *);
-void pn_listener_impl_destroy( struct pn_listener_t *);
+int pn_listener_poller_init( struct pn_listener_t *);
+void pn_listener_poller_destroy( struct pn_listener_t *);
#define PN_CONNECTOR_IO_BUF_SIZE (4*1024)
@@ -66,7 +65,6 @@ void pn_listener_impl_destroy( struct pn
#define PN_SEL_RD (0x0001)
#define PN_SEL_WR (0x0002)
-struct pn_listener_ssl_impl_t;
struct pn_connector_t {
pn_driver_t *driver;
@@ -102,13 +100,13 @@ struct pn_connector_t {
pn_listener_t *listener;
void *context;
- struct pn_connector_impl_t *impl;
- struct pn_connector_ssl_impl_t *ssl;
+ struct pn_connector_poller_t *poller;
+ struct pn_connector_ssl_t *ssl;
};
-int pn_connector_impl_init( struct pn_connector_t *);
-void pn_connector_impl_destroy( struct pn_connector_t *);
-void pn_driver_impl_wait(struct pn_driver_t *, int timeout_ms);
+int pn_connector_poller_init( struct pn_connector_t *);
+void pn_connector_poller_destroy( struct pn_connector_t *);
+void pn_driver_poller_wait(struct pn_driver_t *, int timeout_ms);
int pn_io_handler(pn_connector_t *);
int pn_null_io_handler(pn_connector_t *);
void pn_connector_process_output(pn_connector_t *);
Modified: qpid/proton/branches/driver_abstraction/proton-c/src/drivers/openssl.c
URL: http://svn.apache.org/viewvc/qpid/proton/branches/driver_abstraction/proton-c/src/drivers/openssl.c?rev=1371800&r1=1371799&r2=1371800&view=diff
==============================================================================
--- qpid/proton/branches/driver_abstraction/proton-c/src/drivers/openssl.c (original)
+++ qpid/proton/branches/driver_abstraction/proton-c/src/drivers/openssl.c Fri Aug 10 18:15:35 2012
@@ -43,16 +43,16 @@
static int ssl_initialized;
-struct pn_listener_ssl_impl_t {
+struct pn_listener_ssl_t {
SSL_CTX *ctx;
bool allow_unsecured;
bool ca_db;
char *keyfile_pw;
};
-typedef struct pn_listener_ssl_impl_t pn_listener_ssl_impl_t;
+typedef struct pn_listener_ssl_t pn_listener_ssl_t;
-struct pn_connector_ssl_impl_t {
+struct pn_connector_ssl_t {
enum { SSL_CLIENT, SSL_SERVER } mode;
SSL_CTX *ctx; // NULL if mode=SSL_SERVER - uses listener's ctx
@@ -61,7 +61,7 @@ struct pn_connector_ssl_impl_t {
char *keyfile_pw;
bool read_stalled; // SSL has data to read, but client buffer is full.
};
-typedef struct pn_connector_ssl_impl_t pn_connector_ssl_impl_t;
+typedef struct pn_connector_ssl_t pn_connector_ssl_t;
/* */
static int keyfile_pw_cb(char *buf, int size, int rwflag, void *userdata);
@@ -135,13 +135,13 @@ int pn_listener_ssl_server_init(pn_liste
const char *password,
const char *certificate_db)
{
- listener->ssl = calloc(1, sizeof(pn_listener_ssl_impl_t));
+ listener->ssl = calloc(1, sizeof(pn_listener_ssl_t));
// note: see pn_listener_free_ssl for cleanup/deallocation
if (!listener->ssl) {
perror("calloc()");
return -1;
}
- pn_listener_ssl_impl_t *impl = listener->ssl;
+ pn_listener_ssl_t *impl = listener->ssl;
if (!ssl_initialized) {
ssl_initialized = 1;
@@ -200,12 +200,12 @@ int pn_connector_ssl_client_init(pn_conn
if (connector->listener)
return -1; // not for listener-based connectors
- connector->ssl = calloc(1, sizeof(pn_connector_ssl_impl_t));
+ connector->ssl = calloc(1, sizeof(pn_connector_ssl_t));
if (!connector->ssl) {
perror("calloc()");
return -1;
}
- pn_connector_ssl_impl_t *impl = connector->ssl;
+ pn_connector_ssl_t *impl = connector->ssl;
impl->mode = SSL_CLIENT;
@@ -256,7 +256,7 @@ int pn_connector_ssl_set_client_auth(pn_
{
// @todo check state to verify not yet connected!
- pn_connector_ssl_impl_t *impl = connector->ssl;
+ pn_connector_ssl_t *impl = connector->ssl;
if (!impl || impl->mode != SSL_CLIENT) {
fprintf(stderr, "Error: connector not configured as SSL client.\n");
@@ -286,7 +286,7 @@ int pn_connector_ssl_set_client_auth(pn_
int pn_connector_ssl_authenticate_client(pn_connector_t *connector,
const char *trusted_CAs_file)
{
- pn_connector_ssl_impl_t *impl = connector->ssl;
+ pn_connector_ssl_t *impl = connector->ssl;
if (!impl || impl->mode != SSL_SERVER) {
fprintf(stderr, "Error: connector not configured as SSL server.\n");
@@ -325,7 +325,7 @@ int pn_driver_ssl_data_ready( pn_driver_
pn_connector_t *c = d->connector_head;
while (c) {
if (!c->closed && c->ssl) {
- pn_connector_ssl_impl_t *impl = c->ssl;
+ pn_connector_ssl_t *impl = c->ssl;
if (impl->read_stalled && (c->input_size < PN_CONNECTOR_IO_BUF_SIZE)) {
impl->read_stalled = 0;
c->pending_read = true;
@@ -343,12 +343,12 @@ int pn_listener_init_ssl_client( pn_list
if (!l->ssl) return 0;
assert(!c->ssl);
- c->ssl = calloc(1, sizeof(pn_connector_ssl_impl_t));
+ c->ssl = calloc(1, sizeof(pn_connector_ssl_t));
if (!c->ssl) {
perror("calloc()");
return -1;
}
- pn_connector_ssl_impl_t *impl = c->ssl;
+ pn_connector_ssl_t *impl = c->ssl;
impl->mode = SSL_SERVER;
impl->ctx = NULL; // share the acceptor's context
@@ -383,7 +383,7 @@ void pn_connector_shutdown_ssl( pn_conne
void pn_listener_free_ssl( pn_listener_t *l )
{
if (l->ssl) {
- pn_listener_ssl_impl_t *impl = l->ssl;
+ pn_listener_ssl_t *impl = l->ssl;
// note: ctx is referenced counted - will not actually free until all child SSL
// connections are freed.
if (impl->ctx) SSL_CTX_free(impl->ctx);
@@ -400,7 +400,7 @@ void pn_listener_free_ssl( pn_listener_t
void pn_connector_free_ssl( pn_connector_t *c )
{
if (c->ssl) {
- pn_connector_ssl_impl_t *impl = c->ssl;
+ pn_connector_ssl_t *impl = c->ssl;
if (impl->ssl) SSL_free(impl->ssl);
if (impl->sbio) BIO_free(impl->sbio);
if (impl->ctx) SSL_CTX_free(impl->ctx);
@@ -546,7 +546,7 @@ static int handle_check_for_ssl( pn_conn
static int start_ssl_connect(pn_connector_t *client)
{
fprintf(stderr, "start_ssl_connect()\n");
- pn_connector_ssl_impl_t *impl = client->ssl;
+ pn_connector_ssl_t *impl = client->ssl;
if (!impl) return -1;
impl->ssl = SSL_new(impl->ctx);
@@ -568,7 +568,7 @@ static int start_ssl_connect(pn_connecto
int handle_ssl_connect( pn_connector_t *client )
{
fprintf(stderr, "handle_ssl_connect()\n");
- pn_connector_ssl_impl_t *impl = client->ssl;
+ pn_connector_ssl_t *impl = client->ssl;
if (!impl) return -1;
int rc = SSL_connect( impl->ssl );
@@ -604,9 +604,9 @@ int handle_ssl_connect( pn_connector_t *
static int start_ssl_accept(pn_connector_t *client)
{
- pn_connector_ssl_impl_t *impl = client->ssl;
+ pn_connector_ssl_t *impl = client->ssl;
if (!impl) return -1;
- pn_listener_ssl_impl_t *parent = client->listener->ssl;
+ pn_listener_ssl_t *parent = client->listener->ssl;
if (!parent) return -1;
impl->sbio = BIO_new_socket(client->fd, BIO_NOCLOSE);
@@ -618,7 +618,7 @@ static int start_ssl_accept(pn_connector
static int handle_ssl_accept(pn_connector_t *client)
{
- pn_connector_ssl_impl_t *impl = client->ssl;
+ pn_connector_ssl_t *impl = client->ssl;
if (!impl) return -1;
int rc = SSL_accept(impl->ssl);
@@ -667,7 +667,7 @@ int handle_ssl_connection_up( pn_connect
int need_read = 0;
int need_write = 0;
int input_space;
- pn_connector_ssl_impl_t *impl = c->ssl;
+ pn_connector_ssl_t *impl = c->ssl;
assert(impl);
printf("handle_ssl_connection_up OUT=%d\n", (int)c->output_size);
@@ -778,7 +778,7 @@ static int start_ssl_shutdown( pn_connec
static int handle_ssl_shutdown( pn_connector_t *c )
{
int rc;
- pn_connector_ssl_impl_t *impl = c->ssl;
+ pn_connector_ssl_t *impl = c->ssl;
if (!impl) return -1;
printf("handle_ssl_shutdown...\n");
@@ -798,6 +798,7 @@ static int handle_ssl_shutdown( pn_conne
break;
default: // whatever- consider us closed
case SSL_ERROR_NONE:
+ printf(" shutdown code=%d\n", SSL_get_error(impl->ssl,rc));
// shutdown completed
pn_connector_close( c );
return 0;
Modified: qpid/proton/branches/driver_abstraction/proton-c/src/drivers/poll.c
URL: http://svn.apache.org/viewvc/qpid/proton/branches/driver_abstraction/proton-c/src/drivers/poll.c?rev=1371800&r1=1371799&r2=1371800&view=diff
==============================================================================
--- qpid/proton/branches/driver_abstraction/proton-c/src/drivers/poll.c (original)
+++ qpid/proton/branches/driver_abstraction/proton-c/src/drivers/poll.c Fri Aug 10 18:15:35 2012
@@ -28,98 +28,98 @@
#include <poll.h>
#include <unistd.h>
-typedef struct pn_driver_impl_t {
+typedef struct pn_driver_poller_t {
size_t capacity;
struct pollfd *fds;
size_t nfds;
-} pn_driver_impl_t;
+} pn_driver_poller_t;
-typedef struct pn_listener_impl_t {
+typedef struct pn_listener_poller_t {
int idx;
-} pn_listener_impl_t;
+} pn_listener_poller_t;
-typedef struct pn_connector_impl_t {
+typedef struct pn_connector_poller_t {
int idx;
-} pn_connector_impl_t;
+} pn_connector_poller_t;
-int pn_driver_impl_init( struct pn_driver_t *d )
+int pn_driver_poller_init( struct pn_driver_t *d )
{
- d->impl = calloc(1, sizeof(pn_driver_impl_t));
- if (!d->impl) {
- perror("Unable to allocate select() driver_impl:");
+ d->poller = calloc(1, sizeof(pn_driver_poller_t));
+ if (!d->poller) {
+ perror("Unable to allocate poll() driver poller:");
return -1;
}
return 0;
}
-void pn_driver_impl_destroy( struct pn_driver_t *d )
+void pn_driver_poller_destroy( struct pn_driver_t *d )
{
- if (d->impl) {
- if (d->impl->fds) free(d->impl->fds);
- free(d->impl);
+ if (d->poller) {
+ if (d->poller->fds) free(d->poller->fds);
+ free(d->poller);
}
- d->impl = NULL;
+ d->poller = NULL;
}
-int pn_listener_impl_init( struct pn_listener_t *l )
+int pn_listener_poller_init( struct pn_listener_t *l )
{
- l->impl = calloc(1, sizeof(pn_listener_impl_t));
- if (!l->impl) {
- perror("Unable to allocate poll() listener_impl:");
+ l->poller = calloc(1, sizeof(pn_listener_poller_t));
+ if (!l->poller) {
+ perror("Unable to allocate poll() listener_poller:");
return -1;
}
return 0;
}
-void pn_listener_impl_destroy( struct pn_listener_t *l )
+void pn_listener_poller_destroy( struct pn_listener_t *l )
{
- if (l->impl) free(l->impl);
- l->impl = NULL;
+ if (l->poller) free(l->poller);
+ l->poller = NULL;
}
-int pn_connector_impl_init( struct pn_connector_t *c )
+int pn_connector_poller_init( struct pn_connector_t *c )
{
- c->impl = calloc(1, sizeof(pn_connector_impl_t));
- if (!c->impl) {
- perror("Unable to allocate poll() connector_impl:");
+ c->poller = calloc(1, sizeof(pn_connector_poller_t));
+ if (!c->poller) {
+ perror("Unable to allocate poll() connector_poller:");
return -1;
}
return 0;
}
-void pn_connector_impl_destroy( struct pn_connector_t *c )
+void pn_connector_poller_destroy( struct pn_connector_t *c )
{
- if (c->impl) free(c->impl);
- c->impl = NULL;
+ if (c->poller) free(c->poller);
+ c->poller = NULL;
}
-void pn_driver_impl_wait(pn_driver_t *d, int timeout)
+void pn_driver_poller_wait(pn_driver_t *d, int timeout)
{
- pn_driver_impl_t *impl = d->impl;
+ pn_driver_poller_t *poller = d->poller;
size_t size = d->listener_count + d->connector_count;
- while (impl->capacity < size + 1) {
- impl->capacity = impl->capacity ? 2*impl->capacity : 16;
- impl->fds = realloc(impl->fds, impl->capacity*sizeof(struct pollfd));
+ while (poller->capacity < size + 1) {
+ poller->capacity = poller->capacity ? 2*poller->capacity : 16;
+ poller->fds = realloc(poller->fds, poller->capacity*sizeof(struct pollfd));
}
- impl->nfds = 0;
+ poller->nfds = 0;
- impl->fds[impl->nfds].fd = d->ctrl[0];
- impl->fds[impl->nfds].events = POLLIN;
- impl->fds[impl->nfds].revents = 0;
- impl->nfds++;
+ poller->fds[poller->nfds].fd = d->ctrl[0];
+ poller->fds[poller->nfds].events = POLLIN;
+ poller->fds[poller->nfds].revents = 0;
+ poller->nfds++;
pn_listener_t *l = d->listener_head;
for (int i = 0; i < d->listener_count; i++) {
- impl->fds[impl->nfds].fd = l->fd;
- impl->fds[impl->nfds].events = POLLIN;
- impl->fds[impl->nfds].revents = 0;
- l->impl->idx = impl->nfds;
- impl->nfds++;
+ poller->fds[poller->nfds].fd = l->fd;
+ poller->fds[poller->nfds].events = POLLIN;
+ poller->fds[poller->nfds].revents = 0;
+ l->poller->idx = poller->nfds;
+ poller->nfds++;
l = l->listener_next;
}
@@ -127,19 +127,19 @@ void pn_driver_impl_wait(pn_driver_t *d,
for (int i = 0; i < d->connector_count; i++)
{
if (!c->closed) {
- impl->fds[impl->nfds].fd = c->fd;
- impl->fds[impl->nfds].events = (c->status & PN_SEL_RD ? POLLIN : 0) |
+ poller->fds[poller->nfds].fd = c->fd;
+ poller->fds[poller->nfds].events = (c->status & PN_SEL_RD ? POLLIN : 0) |
(c->status & PN_SEL_WR ? POLLOUT : 0);
- impl->fds[impl->nfds].revents = 0;
- c->impl->idx = impl->nfds;
- impl->nfds++;
+ poller->fds[poller->nfds].revents = 0;
+ c->poller->idx = poller->nfds;
+ poller->nfds++;
}
c = c->connector_next;
}
- DIE_IFE(poll(impl->fds, impl->nfds, d->closed_count > 0 ? 0 : timeout));
+ DIE_IFE(poll(poller->fds, poller->nfds, d->closed_count > 0 ? 0 : timeout));
- if (impl->fds[0].revents & POLLIN) {
+ if (poller->fds[0].revents & POLLIN) {
//clear the pipe
char buffer[512];
while (read(d->ctrl[0], buffer, 512) == 512);
@@ -147,8 +147,8 @@ void pn_driver_impl_wait(pn_driver_t *d,
l = d->listener_head;
while (l) {
- int idx = l->impl->idx;
- l->pending = (idx && impl->fds[idx].revents & POLLIN);
+ int idx = l->poller->idx;
+ l->pending = (idx && poller->fds[idx].revents & POLLIN);
l = l->listener_next;
}
@@ -159,9 +159,9 @@ void pn_driver_impl_wait(pn_driver_t *d,
c->pending_write = false;
c->pending_tick = false;
} else {
- int idx = c->impl->idx;
- c->pending_read = (idx && impl->fds[idx].revents & POLLIN);
- c->pending_write = (idx && impl->fds[idx].revents & POLLOUT);
+ int idx = c->poller->idx;
+ c->pending_read = (idx && poller->fds[idx].revents & POLLIN);
+ c->pending_write = (idx && poller->fds[idx].revents & POLLOUT);
}
c = c->connector_next;
}
Modified: qpid/proton/branches/driver_abstraction/proton-c/src/drivers/select.c
URL: http://svn.apache.org/viewvc/qpid/proton/branches/driver_abstraction/proton-c/src/drivers/select.c?rev=1371800&r1=1371799&r2=1371800&view=diff
==============================================================================
--- qpid/proton/branches/driver_abstraction/proton-c/src/drivers/select.c (original)
+++ qpid/proton/branches/driver_abstraction/proton-c/src/drivers/select.c Fri Aug 10 18:15:35 2012
@@ -28,72 +28,72 @@
#include <sys/select.h>
#include <unistd.h>
-typedef struct pn_driver_impl_t {
+typedef struct pn_driver_poller_t {
fd_set readfds;
fd_set writefds;
int max_fds;
-} pn_driver_impl_t;
+} pn_driver_poller_t;
-// pn_listener_impl_t not used
-// pn_connector_impl_t not used
+// pn_listener_poller_t not used
+// pn_connector_poller_t not used
-int pn_driver_impl_init( struct pn_driver_t *d )
+int pn_driver_poller_init( struct pn_driver_t *d )
{
- d->impl = calloc(1, sizeof(pn_driver_impl_t));
- if (!d->impl) {
- perror("Unable to allocate select() driver_impl:");
+ d->poller = calloc(1, sizeof(pn_driver_poller_t));
+ if (!d->poller) {
+ perror("Unable to allocate select() driver_poller:");
return -1;
}
return 0;
}
-void pn_driver_impl_destroy( struct pn_driver_t *d )
+void pn_driver_poller_destroy( struct pn_driver_t *d )
{
- if (d->impl) free(d->impl);
- d->impl = NULL;
+ if (d->poller) free(d->poller);
+ d->poller = NULL;
}
-int pn_listener_impl_init( struct pn_listener_t *l )
+int pn_listener_poller_init( struct pn_listener_t *l )
{
- l->impl = NULL; // not used
+ l->poller = NULL; // not used
return 0;
}
-void pn_listener_impl_destroy( struct pn_listener_t *l )
+void pn_listener_poller_destroy( struct pn_listener_t *l )
{
}
-int pn_connector_impl_init( struct pn_connector_t *c )
+int pn_connector_poller_init( struct pn_connector_t *c )
{
- c->impl = NULL; // not used
+ c->poller = NULL; // not used
return 0;
}
-void pn_connector_impl_destroy( struct pn_connector_t *c )
+void pn_connector_poller_destroy( struct pn_connector_t *c )
{
}
-void pn_driver_impl_wait(pn_driver_t *d, int timeout)
+void pn_driver_poller_wait(pn_driver_t *d, int timeout)
{
- pn_driver_impl_t *impl = d->impl;
+ pn_driver_poller_t *poller = d->poller;
// setup the select
- FD_ZERO(&impl->readfds);
- FD_ZERO(&impl->writefds);
+ FD_ZERO(&poller->readfds);
+ FD_ZERO(&poller->writefds);
- FD_SET(d->ctrl[0], &impl->readfds);
- impl->max_fds = d->ctrl[0];
+ FD_SET(d->ctrl[0], &poller->readfds);
+ poller->max_fds = d->ctrl[0];
pn_listener_t *l = d->listener_head;
for (int i = 0; i < d->listener_count; i++) {
- FD_SET(l->fd, &impl->readfds);
- if (l->fd > impl->max_fds) impl->max_fds = l->fd;
+ FD_SET(l->fd, &poller->readfds);
+ if (l->fd > poller->max_fds) poller->max_fds = l->fd;
l = l->listener_next;
}
@@ -101,10 +101,10 @@ void pn_driver_impl_wait(pn_driver_t *d,
for (int i = 0; i < d->connector_count; i++) {
if (!c->closed && (c->status & (PN_SEL_RD|PN_SEL_WR))) {
if (c->status & PN_SEL_RD)
- FD_SET(c->fd, &impl->readfds);
+ FD_SET(c->fd, &poller->readfds);
if (c->status & PN_SEL_WR)
- FD_SET(c->fd, &impl->writefds);
- if (c->fd > impl->max_fds) impl->max_fds = c->fd;
+ FD_SET(c->fd, &poller->writefds);
+ if (c->fd > poller->max_fds) poller->max_fds = c->fd;
}
c = c->connector_next;
}
@@ -116,12 +116,12 @@ void pn_driver_impl_wait(pn_driver_t *d,
to.tv_usec = (timeout - (to.tv_sec * 1000)) * 1000;
}
- int nfds = select(impl->max_fds + 1, &impl->readfds, &impl->writefds, NULL, timeout < 0 ? NULL : &to);
+ int nfds = select(poller->max_fds + 1, &poller->readfds, &poller->writefds, NULL, timeout < 0 ? NULL : &to);
DIE_IFE(nfds);
if (nfds > 0) {
- if (FD_ISSET(d->ctrl[0], &impl->readfds)) {
+ if (FD_ISSET(d->ctrl[0], &poller->readfds)) {
//clear the pipe
char buffer[512];
while (read(d->ctrl[0], buffer, 512) == 512);
@@ -129,7 +129,7 @@ void pn_driver_impl_wait(pn_driver_t *d,
pn_listener_t *l = d->listener_head;
while (l) {
- l->pending = FD_ISSET(l->fd, &impl->readfds);
+ l->pending = FD_ISSET(l->fd, &poller->readfds);
l = l->listener_next;
}
@@ -140,8 +140,8 @@ void pn_driver_impl_wait(pn_driver_t *d,
c->pending_write = false;
c->pending_tick = false;
} else {
- c->pending_read = FD_ISSET(c->fd, &impl->readfds);
- c->pending_write = FD_ISSET(c->fd, &impl->writefds);
+ c->pending_read = FD_ISSET(c->fd, &poller->readfds);
+ c->pending_write = FD_ISSET(c->fd, &poller->writefds);
}
c = c->connector_next;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org