test-slave-vm.nut 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. local svm = SlaveVM(1024, true, true);
  2. print(SQLite3, SQLite3.SQLITE_ERROR);
  3. if(svm.preload_lib("sqlite3"))
  4. {
  5. local slave_func = "getInteger";
  6. svm.compilestring(slave_func, "return SQLite3.SQLITE_ERROR;");
  7. local slave_integer = svm.call(true, slave_func);
  8. print("SQLite3.SQLITE_ERROR", slave_integer);
  9. }
  10. print(svm);
  11. print(svm.is_thread_idle(), svm.is_runing_as_thread());
  12. if(svm.is_runing_as_thread())
  13. {
  14. auto slave_code = [==[
  15. auto count = 0;
  16. function getCount(){return count;}
  17. function slaveThreadTask(max_loop)
  18. {
  19. print("==========", max_loop);
  20. //foreach(k,v in getroottable()) print(k,v);
  21. //print("slavevm_thread_lock", slavevm_thread_lock());
  22. for(auto i=0; i < max_loop; ++i)
  23. {
  24. count += max_loop;
  25. print("count", count);
  26. print("slavevm_thread_slave_state", slavevm_thread_slave_state(count));
  27. print("slavevm_thread_cond_wait", slavevm_thread_cond_wait());
  28. //print("slavevm_thread_lock", slavevm_thread_lock());
  29. }
  30. }
  31. ]==];
  32. //local slave_func = "svm_code";
  33. //svm.compilestring(slave_func, slave_code);
  34. //svm.call(false, slave_func);
  35. svm.dostring(slave_code);
  36. svm.thread_run("slaveThreadTask", 5);
  37. for(auto i=0; i < 10; ++i)
  38. {
  39. do {
  40. os.sleep(1000);
  41. print(i);
  42. if(svm.is_thread_idle())
  43. {
  44. print("==thread_slave_state", svm.thread_slave_state());
  45. print("==thread_cond_signal", svm.thread_cond_signal());
  46. break;
  47. }
  48. } while(!svm.is_thread_idle());
  49. }
  50. }
  51. local vm = SlaveVM();
  52. vm.set("_slave_", true);
  53. print(vm);
  54. print(vm.is_thread_idle(), vm.is_runing_as_thread());
  55. print(vm.get("_version_"));
  56. vm.set("dad", "Domingo");
  57. print(vm.get("dad"));
  58. print(vm.get("dad2", "dad2 not found"));
  59. vm.rate = 33.7;
  60. print(vm.rate, vm.get("rate"));
  61. local tbl = {
  62. name="config",
  63. age=32,
  64. active=true,
  65. total=45.98,
  66. colors=[1,2,3,4,5],
  67. }
  68. vm.mc = tbl;
  69. local mc = vm.get("mc");
  70. foreach(k,v in mc) print(k,v);
  71. local ar = "1,2,3,4,5".split(',');
  72. print("1,2,3,4,5".split(','));
  73. local globals = getroottable();
  74. if(!table_get(globals, "_slave_", false)){
  75. print("I'm not a slave !");
  76. //vm.dofile("test-slave-vm.nut");
  77. //vm.dofile("loops.nut");
  78. }
  79. else print("I'm a slave !");
  80. /*
  81. local slave_func = "say_something";
  82. vm.compilestring(slave_func, "::print(\"ciao\")");
  83. vm.call(false, slave_func);
  84. */
  85. try {
  86. local slave_func = "getTable";
  87. 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}]==]);
  88. local slave_tbl = vm.call(true, slave_func);
  89. foreach(k,v in slave_tbl) print(k,v);
  90. }
  91. catch(e){
  92. print(e);
  93. }