Example #1
0
/* connect to server */
int hammer_handler_connect(hammer_connection_t *c)
{
	struct sockaddr_in address;
	int ret, socket;
	hammer_sched_t *sched = hammer_sched_get_sched_struct();
	hammer_connection_t *new_c;

	socket = hammer_socket_create();

	address.sin_family = AF_INET;
	address.sin_addr.s_addr = inet_addr(config->server_ip);
	address.sin_port = htons(config->server_port);

	ret = hammer_socket_connect(socket,(struct sockaddr *)&address, (socklen_t)sizeof(address));
	if (ret != 0) {
		printf("connect error\n");
		return -1;
	}

	/* Get a connection and associate with the epoll event */
	new_c = hammer_get_connection();
	hammer_init_connection(new_c);

	/* Assign socket to worker thread */
	hammer_sched_add_connection(new_c, sched, c);

	return 0;
}
Example #2
0
hammer_job_t *hammer_job_get()
{
#if defined(HAMMER_MALLOC)
	return (hammer_job_t *)hammer_mem_malloc(sizeof(hammer_job_t));
#else
	hammer_sched_t *sched = hammer_sched_get_sched_struct();
	return (hammer_job_t *)libpool_alloc(JOB_SIZE, sched->thread_id);
#endif
}
Example #3
0
hammer_connection_t *hammer_get_connection()
{
#if defined(HAMMER_MALLOC)
	return hammer_mem_malloc(sizeof(hammer_connection_t));
#else
	hammer_sched_t *sched = hammer_sched_get_sched_struct();
	return (hammer_connection_t *)libpool_alloc(CONN_SIZE, sched->thread_id);
#endif
}
Example #4
0
void hammer_free_connection(hammer_connection_t *c)
{
#if defined(HAMMER_MALLOC)
	hammer_mem_free(c);
#else
	hammer_sched_t *sched = hammer_sched_get_sched_struct();
	libpool_free(c, CONN_SIZE, sched->thread_id);
#endif
	return;
}
Example #5
0
int hammer_job_del(hammer_job_t *job)
{
#if defined(HAMMER_MALLOC)
	hammer_mem_free(job);
#else
	hammer_sched_t *sched = hammer_sched_get_sched_struct();
	libpool_free(job, JOB_SIZE, sched->thread_id);
#endif
	return 0
}
Example #6
0
// we delete both the two connections
int hammer_sched_del_connection(hammer_connection_t *c)
{
	hammer_sched_t *sched = hammer_sched_get_sched_struct();

	/* remove this connection */
	hammer_epoll_del(sched->epoll_fd, c->socket);
	hammer_close_connection(c);
	sched->closed_connections ++;

	/* remove its corresponding connection */
	if (c->rc != NULL) {
		hammer_epoll_del(sched->epoll_fd, c->rc->socket);
		hammer_close_connection(c->rc);
		sched->closed_connections ++;
	}

	return 0;
}