Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* here the message data structure */
- typedef struct{
- int aid; /* application id */
- int wfd; /* write fd - for request */
- int rfd; /* read fd - for respond */
- int efd; /* event fd */
- int dpi; /* display dpi */
- char program[256]; /* program name */
- char param[256]; /* param */
- } LART_NEW_APP_DATA;
- /* application manager */
- int lart_app_manager(
- LART_APP_RUN_HANDLER run_handler
- ){
- byte running = 1;
- int res=0;
- _lart_app_run_cb = run_handler;
- while (running){
- dword param = 0;
- voidp data = NULL;
- size_t len = 0;
- byte status = lart_rrecv(¶m, data, &len);
- switch (status){
- case LART_ROOT_MSG_CREATE_APP:
- {
- LART_NEW_APP_RES_DATA res={0};
- res.aid = 0;
- res.pid = -1;
- if ((len==sizeof(LART_NEW_APP_DATA))&&(data)){
- LART_NEW_APP_DATA * reqapp = (LART_NEW_APP_DATA *) data;
- res.aid = reqapp->appid;
- res.pid = lart_app_create(
- reqapp->appid,
- reqapp->program,
- reqapp->param,
- reqapp->wfd,
- reqapp->rfd,
- reqapp->efd,
- reqapp->dpi
- );
- lart_rsend(
- LART_ROOT_MSG_CREATE_APP_RES,
- 1 /* processed */, &res, sizeof(LART_NEW_APP_RES_DATA)
- );
- }
- else{
- lart_rsend(
- LART_ROOT_MSG_CREATE_APP_RES,
- 0, NULL, 0 /* failed - bad message */
- );
- }
- }
- break;
- case LART_ROOT_MSG_TERMINATED:
- {
- /* terminate runtime */
- running = 0;
- res = (int) param;
- }
- break;
- }
- if (len>0){
- free(data);
- data=NULL;
- len=0;
- }
- }
- return res;
- }
Advertisement
Add Comment
Please, Sign In to add comment