project_files/frontlib/ipc.c
changeset 7175 038e3415100a
parent 7173 7c2eb284f9f1
child 7177 bf6cf4dd847a
equal deleted inserted replaced
7173:7c2eb284f9f1 7175:038e3415100a
   153 static void flib_ipc_wrappedtick(flib_ipc ipc) {
   153 static void flib_ipc_wrappedtick(flib_ipc ipc) {
   154 	if(ipc->oldConnState == IPC_NOT_CONNECTED) {
   154 	if(ipc->oldConnState == IPC_NOT_CONNECTED) {
   155 		return;
   155 		return;
   156 	}
   156 	}
   157 
   157 
   158 	flib_ipcconn_tick(ipc->connection);
   158 	if(ipc->oldConnState == IPC_LISTENING) {
   159 	IpcConnState newstate = flib_ipcconn_state(ipc->connection);
   159 		flib_ipcconn_accept(ipc->connection);
   160 	if(ipc->oldConnState == IPC_LISTENING && newstate == IPC_CONNECTED) {
   160 		if(flib_ipcconn_state(ipc->connection) == IPC_CONNECTED) {
   161 		ipc->oldConnState = newstate;
   161 			ipc->oldConnState = IPC_CONNECTED;
   162 		ipc->onConnectCb(ipc->onConnectCtx);
   162 			ipc->onConnectCb(ipc->onConnectCtx);
       
   163 		}
   163 	}
   164 	}
   164 
   165 
   165 	if(ipc->oldConnState == IPC_CONNECTED) {
   166 	if(ipc->oldConnState == IPC_CONNECTED) {
   166 		uint8_t msgbuffer[257];
   167 		uint8_t msgbuffer[257];
   167 		int len;
   168 		int len;
   214 				break;
   215 				break;
   215 			}
   216 			}
   216 		}
   217 		}
   217 	}
   218 	}
   218 
   219 
   219 	newstate = flib_ipcconn_state(ipc->connection);
   220 	if(flib_ipcconn_state(ipc->connection) == IPC_NOT_CONNECTED) {
   220 	if(newstate == IPC_NOT_CONNECTED) {
   221 		ipc->oldConnState = IPC_NOT_CONNECTED;
   221 		ipc->oldConnState = newstate;
       
   222 		ipc->onDisconnectCb(ipc->onDisconnectCtx);
   222 		ipc->onDisconnectCb(ipc->onDisconnectCtx);
       
   223 	}
       
   224 }
       
   225 
       
   226 void flib_ipc_tick(flib_ipc ipc) {
       
   227 	if(!ipc) {
       
   228 		flib_log_w("Call to flib_ipc_tick with ipc==null");
       
   229 		return;
       
   230 	}
       
   231 	if(ipc->running) {
       
   232 		flib_log_w("Call to flib_ipc_tick from a callback");
       
   233 		return;
       
   234 	}
       
   235 
       
   236 	ipc->running = true;
       
   237 	flib_ipc_wrappedtick(ipc);
       
   238 	ipc->running = false;
       
   239 
       
   240 	if(ipc->destroyRequested) {
       
   241 		flib_ipc_destroy(&ipc);
   223 	}
   242 	}
   224 }
   243 }
   225 
   244 
   226 int flib_ipc_send_raw(flib_ipc ipc, void *data, size_t len) {
   245 int flib_ipc_send_raw(flib_ipc ipc, void *data, size_t len) {
   227 	if(!ipc) {
   246 	if(!ipc) {
   259 	if(!ipc) {
   278 	if(!ipc) {
   260 		flib_log_w("Call to flib_ipc_send_messagestr with ipc==null");
   279 		flib_log_w("Call to flib_ipc_send_messagestr with ipc==null");
   261 		flib_constbuffer result = {NULL, 0};
   280 		flib_constbuffer result = {NULL, 0};
   262 		return result;
   281 		return result;
   263 	}
   282 	}
   264 	return flib_ipcconn_getdemo(ipc->connection);
   283 	return flib_ipcconn_getrecord(ipc->connection, false);
   265 }
   284 }
   266 
       
   267 void flib_ipc_tick(flib_ipc ipc) {
       
   268 	if(!ipc) {
       
   269 		flib_log_w("Call to flib_ipc_tick with ipc==null");
       
   270 		return;
       
   271 	}
       
   272 	if(ipc->running) {
       
   273 		flib_log_w("Call to flib_ipc_tick from a callback");
       
   274 		return;
       
   275 	}
       
   276 
       
   277 	ipc->running = true;
       
   278 	flib_ipc_wrappedtick(ipc);
       
   279 	ipc->running = false;
       
   280 
       
   281 	if(ipc->destroyRequested) {
       
   282 		flib_ipc_destroy(&ipc);
       
   283 	}
       
   284 }