project_files/frontlib/ipc/ipcbase.c
changeset 7271 5608ac657362
parent 7234 613998625a3c
child 7314 6171f0bad318
equal deleted inserted replaced
7269:5b0aeef8ba2a 7271:5608ac657362
    71 	} else {
    71 	} else {
    72 		return IPC_NOT_CONNECTED;
    72 		return IPC_NOT_CONNECTED;
    73 	}
    73 	}
    74 }
    74 }
    75 
    75 
    76 static bool isMessageReady(flib_ipcbase *ipc) {
       
    77 	return ipc->readBufferSize >= ipc->readBuffer[0]+1;
       
    78 }
       
    79 
       
    80 static void receiveToBuffer(flib_ipcbase *ipc) {
    76 static void receiveToBuffer(flib_ipcbase *ipc) {
    81 	if(ipc->sock) {
    77 	if(ipc->sock) {
    82 		int size = flib_socket_nbrecv(ipc->sock, ipc->readBuffer+ipc->readBufferSize, sizeof(ipc->readBuffer)-ipc->readBufferSize);
    78 		int size = flib_socket_nbrecv(ipc->sock, ipc->readBuffer+ipc->readBufferSize, sizeof(ipc->readBuffer)-ipc->readBufferSize);
    83 		if(size>=0) {
    79 		if(size>=0) {
    84 			ipc->readBufferSize += size;
    80 			ipc->readBufferSize += size;
    85 		} else {
    81 		} else {
    86 			flib_socket_close(ipc->sock);
    82 			flib_socket_close(ipc->sock);
    87 			ipc->sock = NULL;
    83 			ipc->sock = NULL;
    88 		}
    84 		}
    89 	}
    85 	}
       
    86 }
       
    87 
       
    88 static bool isMessageReady(flib_ipcbase *ipc) {
       
    89 	return ipc->readBufferSize >= ipc->readBuffer[0]+1;
    90 }
    90 }
    91 
    91 
    92 int flib_ipcbase_recv_message(flib_ipcbase *ipc, void *data) {
    92 int flib_ipcbase_recv_message(flib_ipcbase *ipc, void *data) {
    93 	if(!ipc || !data) {
    93 	if(!ipc || !data) {
    94 		flib_log_e("null parameter in flib_ipcbase_recv_message");
    94 		flib_log_e("null parameter in flib_ipcbase_recv_message");
   181 	sendbuf[0] = len;
   181 	sendbuf[0] = len;
   182 	memcpy(sendbuf+1, data, len);
   182 	memcpy(sendbuf+1, data, len);
   183 	return flib_ipcbase_send_raw(ipc, sendbuf, len+1);
   183 	return flib_ipcbase_send_raw(ipc, sendbuf, len+1);
   184 }
   184 }
   185 
   185 
   186 int flib_ipcbase_send_messagestr(flib_ipcbase *ipc, char *data) {
       
   187 	return flib_ipcbase_send_message(ipc, data, strlen(data));
       
   188 }
       
   189 
       
   190 void flib_ipcbase_accept(flib_ipcbase *ipc) {
   186 void flib_ipcbase_accept(flib_ipcbase *ipc) {
   191 	if(!ipc) {
   187 	if(!ipc) {
   192 		flib_log_e("null parameter in flib_ipcbase_accept");
   188 		flib_log_e("null parameter in flib_ipcbase_accept");
   193 	} else if(!ipc->sock && ipc->acceptor) {
   189 	} else if(!ipc->sock && ipc->acceptor) {
   194 		ipc->sock = flib_socket_accept(ipc->acceptor, true);
   190 		ipc->sock = flib_socket_accept(ipc->acceptor, true);