Changed channel struct for async_channel implementation
This commit is contained in:
@@ -39,21 +39,21 @@
|
||||
|
||||
#include "log.h"
|
||||
|
||||
enb_agent_instance_t * enb_agent_async_channel_info(mid_t mod_id, char *dst_ip, uint16_t dst_port) {
|
||||
enb_agent_async_channel_t * enb_agent_async_channel_info(mid_t mod_id, char *dst_ip, uint16_t dst_port) {
|
||||
|
||||
enb_agent_instance_t *channel;
|
||||
channel = (enb_agent_instance_t *) malloc(sizeof(enb_agent_instance_t));
|
||||
enb_agent_async_channel_t *channel;
|
||||
channel = (enb_agent_async_channel_t *) malloc(sizeof(enb_agent_channel_t));
|
||||
|
||||
if (channel == NULL)
|
||||
goto error;
|
||||
|
||||
channel->mod_id = mod_id;
|
||||
channel->enb_id = mod_id;
|
||||
/*Create a socket*/
|
||||
channel->link = new_link_client(dst_ip, dst_port);
|
||||
if (channel->link == NULL) goto error;
|
||||
|
||||
LOG_I(ENB_AGENT,"starting enb agent client for module id %d on ipv4 %s, port %d\n",
|
||||
channel->mod_id,
|
||||
channel->enb_id,
|
||||
dst_ip,
|
||||
dst_port);
|
||||
|
||||
@@ -80,22 +80,22 @@ enb_agent_instance_t * enb_agent_async_channel_info(mid_t mod_id, char *dst_ip,
|
||||
}
|
||||
|
||||
int enb_agent_async_msg_send(void *data, int size, int priority, void *channel_info) {
|
||||
enb_agent_instance_t *channel;
|
||||
channel = (enb_agent_instance_t *)channel_info;
|
||||
enb_agent_async_channel_t *channel;
|
||||
channel = (enb_agent_channel_t *)channel_info;
|
||||
|
||||
return message_put(channel->send_queue, data, size, priority);
|
||||
}
|
||||
|
||||
int enb_agent_async_msg_recv(void **data, int *size, int *priority, void *channel_info) {
|
||||
enb_agent_instance_t *channel;
|
||||
channel = (enb_agent_instance_t *)channel_info;
|
||||
enb_agent_async_channel_t *channel;
|
||||
channel = (enb_agent_async_channel_t *)channel_info;
|
||||
|
||||
return message_get(channel->receive_queue, data, size, priority);
|
||||
}
|
||||
|
||||
void enb_agent_async_release(enb_agent_channel_t *channel) {
|
||||
enb_agent_instance_t *channel_info;
|
||||
channel_info = (enb_agent_instance_t *) channel->channel_info;
|
||||
enb_agent_async_channel_t *channel_info;
|
||||
channel_info = (enb_agent_async_channel_t *) channel->channel_info;
|
||||
|
||||
destroy_link_manager(channel_info->manager);
|
||||
|
||||
|
||||
@@ -39,7 +39,15 @@
|
||||
|
||||
#include "enb_agent_net_comm.h"
|
||||
|
||||
enb_agent_instance_t * enb_agent_async_channel_info(mid_t mod_id, char *dst_ip, uint16_t dst_port);
|
||||
typedef struct {
|
||||
mid_t enb_id;
|
||||
socket_link_t *link;
|
||||
message_queue_t *send_queue;
|
||||
message_queue_t *receive_queue;
|
||||
link_manager_t *manager;
|
||||
} enb_agent_async_channel_t;
|
||||
|
||||
enb_agent_async_channel_t * enb_agent_async_channel_info(mid_t mod_id, char *dst_ip, uint16_t dst_port);
|
||||
|
||||
int enb_agent_async_msg_send(void *data, int size, int priority, void *channel_info);
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
#include "enb_agent_net_comm.h"
|
||||
#include "log.h"
|
||||
|
||||
enb_agent_channel_t *agent_channel[NUM_MAX_ENB_AGENT][ENB_AGENT_MAX];
|
||||
enb_agent_channel_t *agent_channel[NUM_MAX_ENB][ENB_AGENT_MAX];
|
||||
enb_agent_channel_instance_t channel_instance;
|
||||
int enb_agent_channel_id = 0;
|
||||
|
||||
@@ -146,7 +146,7 @@ int enb_agent_destroy_channel(int channel_id) {
|
||||
}
|
||||
|
||||
/*Unregister the channel from all agents*/
|
||||
for (i = 0; i < NUM_MAX_ENB_AGENT; i++) {
|
||||
for (i = 0; i < NUM_MAX_ENB; i++) {
|
||||
for (j = 0; j < ENB_AGENT_MAX; j++) {
|
||||
if (agent_channel[i][j] != NULL) {
|
||||
if (agent_channel[i][j]->channel_id == e->channel_id) {
|
||||
@@ -170,7 +170,7 @@ err_code_t enb_agent_init_channel_container(void) {
|
||||
|
||||
RB_INIT(&channel_instance.enb_agent_head);
|
||||
|
||||
for (i = 0; i < NUM_MAX_ENB_AGENT; i++) {
|
||||
for (i = 0; i < NUM_MAX_ENB; i++) {
|
||||
for (j = 0; j < ENB_AGENT_MAX; j++) {
|
||||
agent_channel[i][j] == NULL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user