project_files/frontlib/net/netbase.c
changeset 7316 f7b49b2c5d84
parent 7314 6171f0bad318
child 7497 7e1d72fc03c7
equal deleted inserted replaced
7314:6171f0bad318 7316:f7b49b2c5d84
    34 	flib_vector *readBuffer;
    34 	flib_vector *readBuffer;
    35 	flib_tcpsocket *sock;
    35 	flib_tcpsocket *sock;
    36 };
    36 };
    37 
    37 
    38 flib_netbase *flib_netbase_create(const char *server, uint16_t port) {
    38 flib_netbase *flib_netbase_create(const char *server, uint16_t port) {
       
    39 	if(log_badargs_if2(server==NULL, port==0)) {
       
    40 		return NULL;
       
    41 	}
       
    42 
    39 	flib_netbase *result = NULL;
    43 	flib_netbase *result = NULL;
    40 	flib_netbase *newNet =  flib_calloc(1, sizeof(flib_netbase));
    44 	flib_netbase *newNet =  flib_calloc(1, sizeof(flib_netbase));
    41 
    45 
    42 	if(newNet) {
    46 	if(newNet) {
    43 		newNet->readBuffer = flib_vector_create();
    47 		newNet->readBuffer = flib_vector_create();
    60 		free(net);
    64 		free(net);
    61 	}
    65 	}
    62 }
    66 }
    63 
    67 
    64 bool flib_netbase_connected(flib_netbase *net) {
    68 bool flib_netbase_connected(flib_netbase *net) {
    65 	if(!net) {
    69 	if(!log_badargs_if(net==NULL) && net->sock) {
    66 		flib_log_e("null parameter in flib_netbase_connected");
       
    67 		return false;
       
    68 	} else if(net->sock) {
       
    69 		return true;
    70 		return true;
    70 	} else {
    71 	}
    71 		return false;
    72 	return false;
    72 	}
       
    73 }
    73 }
    74 
    74 
    75 /**
    75 /**
    76  * Parses and returns a message, and removes it from the vector.
    76  * Parses and returns a message, and removes it from the vector.
    77  */
    77  */
   133 		}
   133 		}
   134 	}
   134 	}
   135 }
   135 }
   136 
   136 
   137 flib_netmsg *flib_netbase_recv_message(flib_netbase *net) {
   137 flib_netmsg *flib_netbase_recv_message(flib_netbase *net) {
   138 	if(!net) {
   138 	if(log_badargs_if(net==NULL)) {
   139 		flib_log_e("null parameter in flib_netbase_recv_message");
       
   140 		return NULL;
   139 		return NULL;
   141 	}
   140 	}
   142 
   141 
   143 	flib_netmsg *msg;
   142 	flib_netmsg *msg;
   144 	while(!(msg=parseMessage(net->readBuffer))
   143 	while(!(msg=parseMessage(net->readBuffer))
   158 		flib_log_d("[NET OUT][%03u]%*.*s",(unsigned)len, (unsigned)len, (unsigned)len, data);
   157 		flib_log_d("[NET OUT][%03u]%*.*s",(unsigned)len, (unsigned)len, (unsigned)len, data);
   159 	}
   158 	}
   160 }
   159 }
   161 
   160 
   162 int flib_netbase_send_raw(flib_netbase *net, const void *data, size_t len) {
   161 int flib_netbase_send_raw(flib_netbase *net, const void *data, size_t len) {
   163 	if(!net || (!data && len>0)) {
   162 	if(log_badargs_if2(net==NULL, data==NULL && len>0)) {
   164 		flib_log_e("null parameter in flib_netbase_send_raw");
       
   165 		return -1;
   163 		return -1;
   166 	}
   164 	}
   167 	if(!net->sock) {
   165 	if(!net->sock) {
   168 		flib_log_w("flib_netbase_send_raw: Not connected.");
   166 		flib_log_w("flib_netbase_send_raw: Not connected.");
   169 		return -1;
   167 		return -1;
   179 		return -1;
   177 		return -1;
   180 	}
   178 	}
   181 }
   179 }
   182 
   180 
   183 int flib_netbase_send_message(flib_netbase *net, flib_netmsg *msg) {
   181 int flib_netbase_send_message(flib_netbase *net, flib_netmsg *msg) {
   184 	if(!net || !msg) {
   182 	if(log_badargs_if2(net==NULL, msg==NULL)) {
   185 		flib_log_e("null parameter in flib_netbase_send_message");
       
   186 		return -1;
   183 		return -1;
   187 	}
   184 	}
   188 
   185 
   189 	size_t totalSize = 0;
   186 	size_t totalSize = 0;
   190 	for(int i=0; i<msg->partCount; i++) {
   187 	for(int i=0; i<msg->partCount; i++) {
   207 	return flib_netbase_send_raw(net, buffer, pos);
   204 	return flib_netbase_send_raw(net, buffer, pos);
   208 }
   205 }
   209 
   206 
   210 int flib_netbase_sendf(flib_netbase *net, const char *format, ...) {
   207 int flib_netbase_sendf(flib_netbase *net, const char *format, ...) {
   211 	int result = -1;
   208 	int result = -1;
   212 	if(!net || !format) {
   209 	if(!log_badargs_if2(net==NULL, format==NULL)) {
   213 		flib_log_e("null parameter in flib_netbase_sendf");
       
   214 	} else {
       
   215 		va_list argp;
   210 		va_list argp;
   216 		va_start(argp, format);
   211 		va_start(argp, format);
   217 		char *buffer = flib_vasprintf(format, argp);
   212 		char *buffer = flib_vasprintf(format, argp);
   218 		if(buffer) {
   213 		if(buffer) {
   219 			result = flib_netbase_send_raw(net, buffer, strlen(buffer));
   214 			result = flib_netbase_send_raw(net, buffer, strlen(buffer));
   245 	}
   240 	}
   246 }
   241 }
   247 
   242 
   248 int flib_netmsg_append_part(flib_netmsg *msg, const void *part, size_t partlen) {
   243 int flib_netmsg_append_part(flib_netmsg *msg, const void *part, size_t partlen) {
   249 	int result = -1;
   244 	int result = -1;
   250 	if(!msg) {
   245 	if(!log_badargs_if2(msg==NULL, part==NULL && partlen>0)) {
   251 		flib_log_e("null parameter in flib_netmsg_append_part");
       
   252 	} else {
       
   253 		char **newParts = realloc(msg->parts, (msg->partCount+1)*sizeof(*msg->parts));
   246 		char **newParts = realloc(msg->parts, (msg->partCount+1)*sizeof(*msg->parts));
   254 		if(newParts) {
   247 		if(newParts) {
   255 			msg->parts = newParts;
   248 			msg->parts = newParts;
   256 			msg->parts[msg->partCount] = flib_malloc(partlen+1);
   249 			msg->parts[msg->partCount] = flib_malloc(partlen+1);
   257 			if(msg->parts[msg->partCount]) {
   250 			if(msg->parts[msg->partCount]) {