struct lumberjack *lumberjack_new(const char *host, unsigned short port, size_t window_size) { struct lumberjack *lumberjack; lumberjack_init(); /* global one-time init */ lumberjack = malloc(sizeof(struct lumberjack)); lumberjack->host = host; lumberjack->port = port; lumberjack->fd = -1; lumberjack->sequence = 0; //rand(); lumberjack->ssl = NULL; lumberjack->connected = 0; /* I tried with 128, 256, 512, 1024, 2048, and 16384, * in a local network, an window size of 1024 seemed to have the best * performance (equal to 2048 and 16384) for the least memory cost. */ if (window_size < 1024) { flog(stdout, "Window size less than 1024 (%d) isn't shown to have " \ "speed-performance benefits", window_size); } lumberjack->ring_size = window_size; lumberjack->ring = ring_new_size(lumberjack->ring_size); /* Create this once. */ lumberjack->ssl_context = SSL_CTX_new(SSLv23_client_method()); SSL_CTX_set_verify(lumberjack->ssl_context, SSL_VERIFY_PEER, NULL); lumberjack->io_buffer = str_new_size(16384); /* TODO(sissel): tunable */ /* zlib provides compressBound() to give a 'worst case' compressed * payload size on a input payload of a given size. */ lumberjack->compression_buffer = str_new_size(compressBound(16384)); return lumberjack; } /* lumberjack_new */
/* ------------------------------------------------------------------------- */ str_t str_new(void) { return str_new_size(kStrInitSize); } /* str_new() */