amarullz

worker template

Jul 28th, 2015
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ----------------------------------- layout.nut ---------------------------------
  2.  
  3. class exampleLayout extends Layout {
  4.   button1 = null;
  5.   worker  = null;
  6.   constructor(layout_data){
  7.     base.constructor(layout_data);
  8.     button1 = findControlId("button1");
  9.     button1.onclick = buttonClick;
  10.   }
  11.   function buttonClick(event){
  12.     if (event.id=="button1"){
  13.       if (event.type=="clicked"){
  14.         worker = Worker("worker.nut", "workerClient", "worker_id");
  15.         worker.setEventListener(onWorkerEvent);
  16.         worker.start();
  17.         worker.postMessage({ value = 1, name = "test"});
  18.       }
  19.     }
  20.   }
  21.   function onWorkerEvent(event){
  22.     local workerid = event.id; /* "worker_id" */
  23.     if (event.type=="finish"){
  24.       ...
  25.     }
  26.     else if (event.type=="message"){
  27.       local event_data = event.data;
  28.     }
  29.   }
  30. }
  31.  
  32. ----------------------------------- worker.nut ---------------------------------
  33.  
  34. class workerClient extends WorkerClient{
  35.   constructor(id){
  36.     ...
  37.   }
  38.   function onEvent(event){
  39.     if (event.type=="start"){
  40.       postMessage("Started");
  41.       ...
  42.     }
  43.     else if (event.type=="message"){
  44.       if (event.data.value==1){
  45.         postMessage("Will Finish");
  46.         finish();
  47.       }
  48.     }
  49.   }
  50. }
  51.  
  52. ----------------------------------- worker-new.nut ---------------------------------
  53.  
  54. /* just execute this script */
  55. local output=System.exec("longprocess -v");
  56. do{
  57.   /* true = wait for message, false = return false if there is no message avail in queue */
  58.   local msg = getMessage();
  59.   if (msg.value==1){
  60.     postMessage("Will Finish");
  61.     finish("return message");
  62.   }
  63. }while(getStatus()=="active");
  64. /* when parent call worker.stop(); the getStatus() will return "inactive" */
  65. /* no finish() in end of script is ok, but it won't pass any return value */
Advertisement
Add Comment
Please, Sign In to add comment