Skip to content

Instantly share code, notes, and snippets.

@christian-marie
Created January 24, 2014 02:03
Show Gist options
  • Save christian-marie/8590803 to your computer and use it in GitHub Desktop.
Save christian-marie/8590803 to your computer and use it in GitHub Desktop.
static void *main_thread() {
typedef struct {
void *socket;
timeval timeout;
current_msg;
}
socket sockets[10];
for( 0..10) {
socket[i] = make_socket;
}
#define ever ;;
for(ever) {
zmq_poll( items...);
if( items[inbound_socket] & ZMQ_POLLIN ) {
zmq_recv(in...)
for(0..10) {
// send to first avaliable socket
if(items[first_socket + i] & ZMQ_POLLOUT) {
socket[i]->current_msg = out;
socket[i]->timeout = now + whatever;
zmq_send(out....)
}
}
}
if( items[push_back_socket & ZMQ_POLLIN) {
msg = zmq_recv(...);
defer_to_disk(msg);
}
for( 0..10 )
check_socket_expiry_or_defer_to_disk_and_reset_connection(sockets[i]);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment