amarullz

app manager

Jul 3rd, 2015
272
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.90 KB | None | 0 0
  1. /* here the message data structure */
  2. typedef struct{
  3.   int     aid;            /* application id */
  4.   int     wfd;            /* write fd - for request */
  5.   int     rfd;            /* read fd - for respond */
  6.   int     efd;            /* event fd */
  7.   int     dpi;            /* display dpi */
  8.   char    program[256];   /* program name */
  9.   char    param[256];     /* param */
  10. } LART_NEW_APP_DATA;
  11.  
  12. /* application manager */
  13. int lart_app_manager(
  14.   LART_APP_RUN_HANDLER run_handler
  15. ){
  16.   byte running = 1;
  17.   int res=0;
  18.   _lart_app_run_cb = run_handler;
  19.  
  20.   while (running){
  21.     dword param = 0;
  22.     voidp data  = NULL;
  23.     size_t len  = 0;
  24.     byte status = lart_rrecv(&param, data, &len);
  25.    
  26.     switch (status){
  27.       case LART_ROOT_MSG_CREATE_APP:
  28.         {
  29.           LART_NEW_APP_RES_DATA res={0};
  30.           res.aid = 0;
  31.           res.pid = -1;
  32.           if ((len==sizeof(LART_NEW_APP_DATA))&&(data)){
  33.             LART_NEW_APP_DATA * reqapp = (LART_NEW_APP_DATA *) data;
  34.             res.aid = reqapp->appid;
  35.             res.pid = lart_app_create(
  36.               reqapp->appid,
  37.               reqapp->program,
  38.               reqapp->param,
  39.               reqapp->wfd,
  40.               reqapp->rfd,
  41.               reqapp->efd,
  42.               reqapp->dpi
  43.             );
  44.             lart_rsend(
  45.               LART_ROOT_MSG_CREATE_APP_RES,
  46.               1 /* processed */,  &res, sizeof(LART_NEW_APP_RES_DATA)
  47.             );
  48.           }
  49.           else{
  50.             lart_rsend(
  51.               LART_ROOT_MSG_CREATE_APP_RES,
  52.               0, NULL, 0 /* failed - bad message */
  53.             );
  54.           }
  55.         }
  56.         break;
  57.       case LART_ROOT_MSG_TERMINATED:
  58.         {
  59.           /* terminate runtime */
  60.           running = 0;
  61.           res = (int) param;
  62.         }
  63.         break;
  64.     }
  65.    
  66.     if (len>0){
  67.       free(data);
  68.       data=NULL;
  69.       len=0;
  70.     }
  71.   }
  72.   return res;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment