test-slave-vm.nut 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. local svm = SlaveVM(1024, true, true);
  2. print(svm);
  3. print(svm.is_thread_idle(), svm.is_runing_as_thread());
  4. if(svm.is_runing_as_thread())
  5. {
  6. auto slave_code = [==[
  7. auto count = 0;
  8. function getCount(){return count;}
  9. function slaveThreadTask(max_loop)
  10. {
  11. print("==========", max_loop);
  12. //foreach(k,v in getroottable()) print(k,v);
  13. //print("slavevm_thread_lock", slavevm_thread_lock());
  14. for(auto i=0; i < max_loop; ++i)
  15. {
  16. count += max_loop;
  17. print("count", count);
  18. print("slavevm_thread_slave_state", slavevm_thread_slave_state(count));
  19. print("slavevm_thread_cond_wait", slavevm_thread_cond_wait());
  20. //print("slavevm_thread_lock", slavevm_thread_lock());
  21. }
  22. }
  23. ]==];
  24. //local slave_func = "svm_code";
  25. //svm.compilestring(slave_func, slave_code);
  26. //svm.call(false, slave_func);
  27. svm.dostring(slave_code);
  28. svm.thread_run("slaveThreadTask", 5);
  29. for(auto i=0; i < 10; ++i)
  30. {
  31. do {
  32. os.sleep(1000);
  33. print(i);
  34. if(svm.is_thread_idle())
  35. {
  36. print("==thread_slave_state", svm.thread_slave_state());
  37. print("==thread_cond_signal", svm.thread_cond_signal());
  38. break;
  39. }
  40. } while(!svm.is_thread_idle());
  41. }
  42. }
  43. local vm = SlaveVM();
  44. vm.set("_slave_", true);
  45. print(vm);
  46. print(vm.is_thread_idle(), vm.is_runing_as_thread());
  47. print(vm.get("_version_"));
  48. vm.set("dad", "Domingo");
  49. print(vm.get("dad"));
  50. print(vm.get("dad2", "dad2 not found"));
  51. vm.rate = 33.7;
  52. print(vm.rate, vm.get("rate"));
  53. local tbl = {
  54. name="config",
  55. age=32,
  56. active=true,
  57. total=45.98,
  58. colors=[1,2,3,4,5],
  59. }
  60. vm.mc = tbl;
  61. local mc = vm.get("mc");
  62. foreach(k,v in mc) print(k,v);
  63. local ar = "1,2,3,4,5".split(',');
  64. print("1,2,3,4,5".split(','));
  65. local globals = getroottable();
  66. if(!table_get(globals, "_slave_", false)){
  67. print("I'm not a slave !");
  68. //vm.dofile("test-slave-vm.nut");
  69. //vm.dofile("loops.nut");
  70. }
  71. else print("I'm a slave !");
  72. /*
  73. local slave_func = "say_something";
  74. vm.compilestring(slave_func, "::print(\"ciao\")");
  75. vm.call(false, slave_func);
  76. */
  77. try {
  78. local slave_func = "getTable";
  79. vm.compilestring(slave_func, [==[return {"nodes":[{"_id":"5206163192518f6f21000180","tag":"body","classes":[],"@class":[],"children":["1d4048ee-0942-df4c-a506-5ee3e3ca8b6d"],"data":{"attr":{},"clearfix":false}},{"_id":"1d4048ee-0942-df4c-a506-5ee3e3ca8b6d","tag":"img","classes":[],"@class":[],"@src":"/wf/design/blank/comment.png","children":[],"data":{"attr":{"src":"/wf/design/blank/comment.png"},"image":{"width":100,"height":35,"size":1943,"fileName":"comment.png","_id":"dad234"}}}],"dropCount":0,"lastSynced":null}]==]);
  80. local slave_tbl = vm.call(true, slave_func);
  81. foreach(k,v in slave_tbl) print(k,v);
  82. }
  83. catch(e){
  84. print(e);
  85. }