Commit fa2ed4a5 authored by EVPath Upstream's avatar EVPath Upstream Committed by Eisenhauer, Greg
Browse files

EVPath 2018-06-21 (d37a491d)

Code extracted from:

    https://github.com/GTkorvo/EVPath.git

at commit d37a491d849d705963f222bfe00099c3dd6eab70 (master).

Upstream Shortlog
-----------------
parent 001c44b9
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -104,6 +104,7 @@ struct CMtrans_services_s CMstatic_trans_svcs = {INT_CMmalloc, INT_CMrealloc, IN
						 add_buffer_to_pending_queue,
						 INT_CMConnection_dereference,
						 INT_CMConnection_add_reference,
						 INT_CMConnection_failed,
						 CMwake_server_thread
};
static void INT_CMControlList_close(CMControlList cl, CManager cm);
+1 −0
Original line number Diff line number Diff line
@@ -87,6 +87,7 @@ typedef struct CMtrans_services_s {
    CMTransport_add_buffer_to_pending_queue add_buffer_to_pending_queue;
    CMTransport_connection_close connection_deref;
    CMTransport_connection_close connection_addref;
    CMTransport_connection_close connection_fail;
    CMTransport_wake_comm_thread_func wake_comm_thread;
} *CMtrans_services;
#define DROP_CM_LOCK(svc, cm) (svc)->drop_CM_lock((cm), __FILE__, __LINE__)
+17 −0
Original line number Diff line number Diff line
@@ -201,11 +201,24 @@ enet_service_network(CManager cm, void *void_trans)

            enet_conn_data = event.peer->data;
	    enet_conn_data->read_buffer_len = -1;
            svc->connection_fail(enet_conn_data->conn);
        }
	}
    }
}

static
void
enet_service_network_lock(CManager cm, void *void_trans)
{
    transport_entry trans = (transport_entry) void_trans;
    enet_client_data_ptr ecd = (enet_client_data_ptr) trans->trans_data;
    CMtrans_services svc = ecd->svc;
    ACQUIRE_CM_LOCK(svc, cm);
    enet_service_network(cm, void_trans);
    DROP_CM_LOCK(svc, cm);
}

static
void
read_wake_fd_and_service(CManager cm, void *void_trans)
@@ -390,6 +403,7 @@ initiate_conn(CManager cm, CMtrans_services svc, transport_entry trans,

    /* Initiate the connection, allocating the two channels 0 and 1. */
    peer = enet_host_connect (sd->server, & address, 1, 0);    
    enet_peer_ping_interval (peer, 10);
    peer->data = enet_conn_data;
    svc->trace_out(cm, "ENET ========   On init Assigning peer %p has data %p\n", peer, enet_conn_data);
    
@@ -416,6 +430,7 @@ retry:
            svc->trace_out(cm, "ENET ========   Assigning peer %p has data %p\n", event.peer, enet_connection_data);
            event.peer->data = enet_connection_data;
	    ((enet_conn_data_ptr)enet_connection_data)->peer = event.peer;
            enet_peer_ping_interval (event.peer, 10);
            goto retry;
        }
	svc->trace_out(cm, "Connection to %s:%d succeeded.\n", inet_ntoa(sin_addr), address.port);
@@ -747,6 +762,8 @@ libcmenet_LTX_non_blocking_listen(CManager cm, CMtrans_services svc,
    svc->fd_add_select(cm, enet_host_get_sock_fd (server), 
		       (select_list_func) enet_service_network, (void*)cm, (void*)trans);

    svc->add_periodic_task(cm, 1, 0, (CMPollFunc) enet_service_network_lock, (void*)trans);

    svc->trace_out(enet_data->cm, "CMENET Adding read_wake_fd as action on fd %d",
		   enet_data->wake_read_fd);