Class: RemoteTkIp

Inherits:
MultiTkIp show all
Defined in:
lib/remote-tk.rb,
lib/remote-tk.rb,
lib/remote-tk.rb,
lib/remote-tk.rb

Constant Summary collapse

@@IP_TABLE =
MultiTkIp._IP_TABLE
@@TK_TABLE_LIST =
MultiTkIp._TK_TABLE_LIST

Constants inherited from MultiTkIp

MultiTkIp::BASE_DIR, MultiTkIp::INTERP_MUTEX, MultiTkIp::INTERP_ROOT_CHECK, MultiTkIp::INTERP_THREAD, MultiTkIp::RUN_EVENTLOOP_ON_MAIN_THREAD, MultiTkIp::WITH_ENCODING, MultiTkIp::WITH_RUBY_VM

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from MultiTkIp

_DEFAULT_MASTER, _IP_TABLE, _TK_TABLE_LIST, #__create_safe_slave_obj, #__create_trusted_slave_obj, __getip, #__pseudo_toplevel, #__pseudo_toplevel=, #__pseudo_toplevel_evaluable=, #__pseudo_toplevel_evaluable?, #_add_new_tables, #_add_tk_procs, _conv_listelement, _create_console, #_create_slave_object, #_default_delete_hook, #_destroy_slaves_of_slaveIP, _eval, _eval_with_enc, _eval_without_enc, _fromUTF8, _get_global_var, _get_global_var2, _get_variable, _get_variable2, #_init_ip_env, #_init_ip_internal, _invoke, _invoke_with_enc, _invoke_without_enc, _ip_id_, #_make_menu_embeddable, _make_menu_embeddable, _merge_tklist, #_receiver_mainloop, #_remove_tk_procs, _return_value, _set_global_var, _set_global_var2, _set_variable, _set_variable2, _split_tklist, _thread_tkwait, _thread_vwait, #_tk_cmd_tbl, #_tk_table_list, #_tk_windows, _toUTF8, _unset_global_var, _unset_global_var2, _unset_variable, _unset_variable2, #abort, abort, add_tk_procs, #alias_delete, alias_delete, alias_info, #alias_info, #alias_target, alias_target, #aliases, aliases, #alive?, alive?, allow_ruby_exit=, allow_ruby_exit?, #background_call, #background_eval, #background_eval_proc, #background_eval_str, #background_eval_string, #bg_call, #bg_eval, bg_eval, #bg_eval_proc, bg_eval_proc, #bg_eval_str, #bg_eval_string, bg_eval_string, bgerror, #call, cb_entry_class, #cb_error, #cb_eval, create_table, def_alias, #def_alias, #default_encoding=, delete, #delete_cmd, delete_cmd, #delete_slaves, delete_slaves, deleted?, do_one_event, #encoding=, #encoding_convertfrom, #encoding_convertto, #encoding_name, #encoding_obj, encoding_table, #encoding_table, #eval, eval, #eval_callback, #eval_proc, eval_proc, #eval_str, eval_string, #eval_string, exist?, #exist?, exit, #exit, exit!, #exit!, #expose_cmd, expose_cmd, #force_default_encoding=, #force_default_encoding?, #get_bgerror_handler, get_cb_entry, #get_limit, get_limit, has_mainwindow?, #hidden_cmds, hidden_cmds, hide_cmd, #hide_cmd, inherited, init_ip_env, init_ip_internal, #inspect, invalid_namespace?, #invoke_hidden, invoke_hidden, invoke_hidden_on_global, #invoke_hidden_on_global, #invoke_hidden_on_namespace, invoke_hidden_on_namespace, #ip_name, ip_name, make_safe, #mark_trusted, mark_trusted, master?, #master?, method_missing, new_master, new_safe_slave, new_slave, path, #path, recursion_limit, #recursion_limit, remove_tk_procs, restart, #running_mainloop?, safe?, safe_base?, #safe_level, safe_level, safe_level=, #safe_level=, #safeip_add_to_access_path, #safeip_configinfo, #safeip_configure, #safeip_delete, #safeip_find_in_access_path, #safeip_set_log_cmd, #set_bgerror_handler, #set_cb_error, set_limit, #set_limit, #set_safe_level, set_safe_level, share_stderr, #share_stderr, share_stdin, #share_stdin, #share_stdio, share_stdio, #share_stdout, share_stdout, #slave?, slave?, slaves, #slaves, #thread_eval_proc, tk_cmd_tbl, tk_object_table, tk_windows, to_eval, #to_eval, #transfer_stderr, transfer_stderr, #transfer_stdin, transfer_stdin, #transfer_stdio, transfer_stdio, #transfer_stdout, transfer_stdout, #wait_on_mainloop=, #wait_on_mainloop?

Constructor Details

#initialize(remote_ip, displayof = nil, timeout = 5) ⇒ RemoteTkIp

Returns a new instance of RemoteTkIp.



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/remote-tk.rb', line 63

def initialize(remote_ip, displayof=nil, timeout=5)
  if $SAFE >= 4
    fail SecurityError, "cannot access another interpreter at level #{$SAFE}"
  end

  @interp = MultiTkIp.__getip
  if @interp.safe?
    fail SecurityError, "safe-IP cannot create RemoteTkIp"
  end


  @interp.allow_ruby_exit = false
  @appname = @interp._invoke('tk', 'appname')
  @remote = remote_ip.to_s.dup.freeze
  if displayof.kind_of?(TkWindow)
    @displayof = displayof.path.dup.freeze
  else
    @displayof = nil
  end
  if self.deleted?
    fail RuntimeError, "no Tk application named \"#{@remote}\""
  end

  @tk_windows = {}
  @tk_table_list = []
  @slave_ip_tbl = {}
  @slave_ip_top = {}

  @tk_windows.taint unless @tk_windows.tainted?
  @tk_table_list.taint unless @tk_table_list.tainted?
  @slave_ip_tbl.taint unless @slave_ip_tbl.tainted?
  @slave_ip_top.taint unless @slave_ip_top.tainted?

  @system = Object.new

  @threadgroup  = ThreadGroup.new

  @safe_level = [$SAFE]

  @wait_on_mainloop = [true, 0]

  @cmd_queue = Queue.new

=begin
  @cmd_receiver, @receiver_watchdog = _create_receiver_and_watchdog()

  @threadgroup.add @cmd_receiver
  @threadgroup.add @receiver_watchdog

  @threadgroup.enclose
=end
  @@DEFAULT_MASTER.assign_receiver_and_watchdog(self)

  @@IP_TABLE[@threadgroup] = self
  @@TK_TABLE_LIST.size.times{ 
    (tbl = {}).tainted? || tbl.taint
    @tk_table_list << tbl
  }

  @ret_val = TkVariable.new
  if timeout > 0 && ! _available_check(timeout)
    fail RuntimeError, "cannot create connection"
  end
  @ip_id = _create_connection

  class << self
    undef :instance_eval
  end

  self.freeze  # defend against modification
end

Class Method Details

.do_one_evant(flag = nil) ⇒ Object



499
500
501
# File 'lib/remote-tk.rb', line 499

def do_one_evant(flag = nil)
  fail RuntimeError, 'not support "do_one_event" on the remote interpreter'
end

.get_eventloop_tickObject



511
512
513
# File 'lib/remote-tk.rb', line 511

def get_eventloop_tick
  fail RuntimeError, 'not support "get_eventloop_tick" on the remote interpreter'
end

.get_eventloop_weightObject



523
524
525
# File 'lib/remote-tk.rb', line 523

def get_eventloop_weight
  fail RuntimeError, 'not support "get_eventloop_weight" on the remote interpreter'
end

.get_no_event_waitObject



517
518
519
# File 'lib/remote-tk.rb', line 517

def get_no_event_wait
  fail RuntimeError, 'not support "get_no_event_wait" on the remote interpreter'
end

.mainloop(*args) ⇒ Object



493
494
495
# File 'lib/remote-tk.rb', line 493

def mainloop(*args)
  fail RuntimeError, 'not support "mainloop" on the remote interpreter'
end

.mainloop_abort_on_exceptionObject



502
503
504
# File 'lib/remote-tk.rb', line 502

def mainloop_abort_on_exception
  fail RuntimeError, 'not support "mainloop_abort_on_exception" on the remote interpreter'
end

.mainloop_abort_on_exception=(mode) ⇒ Object



505
506
507
# File 'lib/remote-tk.rb', line 505

def mainloop_abort_on_exception=(mode)
  fail RuntimeError, 'not support "mainloop_abort_on_exception=" on the remote interpreter'
end

.mainloop_watchdog(*args) ⇒ Object



496
497
498
# File 'lib/remote-tk.rb', line 496

def mainloop_watchdog(*args)
  fail RuntimeError, 'not support "mainloop_watchdog" on the remote interpreter'
end

.manipulable?Boolean

Returns:

  • (Boolean)


139
140
141
# File 'lib/remote-tk.rb', line 139

def self.manipulable?
  true
end

.new(*args, &b) ⇒ Object



55
56
57
58
59
# File 'lib/remote-tk.rb', line 55

def new(*args, &b)
  ip = __new(*args)
  ip.eval_proc(&b) if b
  ip
end

.set_eventloop_tick(*args) ⇒ Object



508
509
510
# File 'lib/remote-tk.rb', line 508

def set_eventloop_tick(*args)
  fail RuntimeError, 'not support "set_eventloop_tick" on the remote interpreter'
end

.set_eventloop_weight(*args) ⇒ Object



520
521
522
# File 'lib/remote-tk.rb', line 520

def set_eventloop_weight(*args)
  fail RuntimeError, 'not support "set_eventloop_weight" on the remote interpreter'
end

.set_no_event_wait(*args) ⇒ Object



514
515
516
# File 'lib/remote-tk.rb', line 514

def set_no_event_wait(*args)
  fail RuntimeError, 'not support "set_no_event_wait" on the remote interpreter'
end

Instance Method Details

#__eval(str) ⇒ Object



337
338
339
# File 'lib/remote-tk.rb', line 337

def __eval(str)
  _appsend(false, false, str)
end

#__invoke(*args) ⇒ Object



354
355
356
# File 'lib/remote-tk.rb', line 354

def __invoke(*args)
  _appsend(false, false, *args)
end

#_conv_listelement(str) ⇒ Object

Raises:

  • (SecurityError)


448
449
450
451
# File 'lib/remote-tk.rb', line 448

def _conv_listelement(str)
  raise SecurityError, "no permission to manipulate" unless self.manipulable?
  @interp._conv_listelement(str)
end

#_create_consoleObject



453
454
455
# File 'lib/remote-tk.rb', line 453

def _create_console
  fail RuntimeError, 'not support "_create_console" on the remote interpreter'
end

#_eval(str) ⇒ Object



340
341
342
# File 'lib/remote-tk.rb', line 340

def _eval(str)
  _appsend(nil, false, str)
end

#_eval_with_enc(str) ⇒ Object



346
347
348
# File 'lib/remote-tk.rb', line 346

def _eval_with_enc(str)
  _appsend(true, false, str)
end

#_eval_without_enc(str) ⇒ Object



343
344
345
# File 'lib/remote-tk.rb', line 343

def _eval_without_enc(str)
  _appsend(false, false, str)
end

#_fromUTF8(str, encoding = nil) ⇒ Object

Raises:

  • (SecurityError)


372
373
374
375
# File 'lib/remote-tk.rb', line 372

def _fromUTF8(str, encoding=nil)
  raise SecurityError, "no permission to manipulate" unless self.manipulable?
  @interp._fromUTF8(str, encoding)
end

#_get_global_var(var_name) ⇒ Object



417
418
419
# File 'lib/remote-tk.rb', line 417

def _get_global_var(var_name)
  _appsend(false, 'set', TkComm::_get_eval_string(var_name))
end

#_get_global_var2(var_name, index_name) ⇒ Object



420
421
422
# File 'lib/remote-tk.rb', line 420

def _get_global_var2(var_name, index_name)
  _appsend(false, 'set', "#{TkComm::_get_eval_string(var_name)}(#{TkComm::_get_eval_string(index_name)})")
end

#_get_variable(var_name, flag) ⇒ Object



390
391
392
393
# File 'lib/remote-tk.rb', line 390

def _get_variable(var_name, flag)
  # ignore flag
  _appsend(false, 'set', TkComm::_get_eval_string(var_name))
end

#_get_variable2(var_name, index_name, flag) ⇒ Object



394
395
396
397
# File 'lib/remote-tk.rb', line 394

def _get_variable2(var_name, index_name, flag)
  # ignore flag
  _appsend(false, 'set', "#{TkComm::_get_eval_string(var_name)}(#{TkComm::_get_eval_string(index_name)})")
end

#_invoke(*args) ⇒ Object



350
351
352
# File 'lib/remote-tk.rb', line 350

def _invoke(*args)
  _appsend(nil, false, *args)
end

#_invoke_with_enc(*args) ⇒ Object



363
364
365
# File 'lib/remote-tk.rb', line 363

def _invoke_with_enc(*args)
  _appsend(true, false, *args)
end

#_invoke_without_enc(*args) ⇒ Object



360
361
362
# File 'lib/remote-tk.rb', line 360

def _invoke_without_enc(*args)
  _appsend(false, false, *args)
end

#_ip_id_Object



148
149
150
# File 'lib/remote-tk.rb', line 148

def _ip_id_
  @ip_id
end

#_merge_tklist(*args) ⇒ Object

Raises:

  • (SecurityError)


443
444
445
446
# File 'lib/remote-tk.rb', line 443

def _merge_tklist(*args)
  raise SecurityError, "no permission to manipulate" unless self.manipulable?
  @interp._merge_tklist(*args)
end

#_return_valueObject

Raises:

  • (SecurityError)


385
386
387
388
# File 'lib/remote-tk.rb', line 385

def _return_value
  raise SecurityError, "no permission to manipulate" unless self.manipulable?
  @interp._return_value
end

#_set_global_var(var_name, value) ⇒ Object



424
425
426
# File 'lib/remote-tk.rb', line 424

def _set_global_var(var_name, value)
  _appsend(false, 'set', TkComm::_get_eval_string(var_name), TkComm::_get_eval_string(value))
end

#_set_global_var2(var_name, index_name, value) ⇒ Object



427
428
429
# File 'lib/remote-tk.rb', line 427

def _set_global_var2(var_name, index_name, value)
  _appsend(false, 'set', "#{TkComm::_get_eval_string(var_name)}(#{TkComm::_get_eval_string(index_name)})", TkComm::_get_eval_string(value))
end

#_set_variable(var_name, value, flag) ⇒ Object



399
400
401
402
# File 'lib/remote-tk.rb', line 399

def _set_variable(var_name, value, flag)
  # ignore flag
  _appsend(false, 'set', TkComm::_get_eval_string(var_name), TkComm::_get_eval_string(value))
end

#_set_variable2(var_name, index_name, value, flag) ⇒ Object



403
404
405
406
# File 'lib/remote-tk.rb', line 403

def _set_variable2(var_name, index_name, value, flag)
  # ignore flag
  _appsend(false, 'set', "#{TkComm::_get_eval_string(var_name)}(#{TkComm::_get_eval_string(index_name)})", TkComm::_get_eval_string(value))
end

#_split_tklist(str) ⇒ Object

Raises:

  • (SecurityError)


438
439
440
441
# File 'lib/remote-tk.rb', line 438

def _split_tklist(str)
  raise SecurityError, "no permission to manipulate" unless self.manipulable?
  @interp._split_tklist(str)
end

#_thread_tkwait(mode, target) ⇒ Object



381
382
383
# File 'lib/remote-tk.rb', line 381

def _thread_tkwait(mode, target)
  _appsend(false, 'thread_tkwait', mode, target)
end

#_thread_vwait(var_name) ⇒ Object



377
378
379
# File 'lib/remote-tk.rb', line 377

def _thread_vwait(var_name)
  _appsend(false, 'thread_vwait', varname)
end

#_toUTF8(str, encoding = nil) ⇒ Object

Raises:

  • (SecurityError)


367
368
369
370
# File 'lib/remote-tk.rb', line 367

def _toUTF8(str, encoding=nil)
  raise SecurityError, "no permission to manipulate" unless self.manipulable?
  @interp._toUTF8(str, encoding)
end

#_unset_global_var(var_name) ⇒ Object



431
432
433
# File 'lib/remote-tk.rb', line 431

def _unset_global_var(var_name)
  _appsend(false, 'unset', TkComm::_get_eval_string(var_name))
end

#_unset_global_var2(var_name, index_name) ⇒ Object



434
435
436
# File 'lib/remote-tk.rb', line 434

def _unset_global_var2(var_name, index_name)
  _appsend(false, 'unset', "#{var_name}(#{index_name})")
end

#_unset_variable(var_name, flag) ⇒ Object



408
409
410
411
# File 'lib/remote-tk.rb', line 408

def _unset_variable(var_name, flag)
  # ignore flag
  _appsend(false, 'unset', TkComm::_get_eval_string(var_name))
end

#_unset_variable2(var_name, index_name, flag) ⇒ Object



412
413
414
415
# File 'lib/remote-tk.rb', line 412

def _unset_variable2(var_name, index_name, flag)
  # ignore flag
  _appsend(false, 'unset', "#{var_name}(#{index_name})")
end

#allow_ruby_exit=(mode) ⇒ Object



289
290
291
# File 'lib/remote-tk.rb', line 289

def allow_ruby_exit= (mode)
  fail RuntimeError, 'cannot change mode of the remote interpreter'
end

#allow_ruby_exit?Boolean

Returns:

  • (Boolean)


285
286
287
# File 'lib/remote-tk.rb', line 285

def allow_ruby_exit?
  false
end

#appsend(async, *args) ⇒ Object

Raises:

  • (SecurityError)


236
237
238
239
240
241
242
243
244
245
246
247
248
# File 'lib/remote-tk.rb', line 236

def appsend(async, *args)
  raise SecurityError, "no permission to manipulate" unless self.manipulable?

  if async != true && async != false && async != nil
    args.unshift(async)
    async = false
  end
  if @displayof
    Tk.appsend_displayof(@remote, @displayof, async, *args)
  else
    Tk.appsend(@remote, async, *args)
  end
end

#create_slave(name, safe = false) ⇒ Object



264
265
266
267
268
269
270
271
# File 'lib/remote-tk.rb', line 264

def create_slave(name, safe=false)
  if safe
    safe_opt = ''
  else
    safe_opt = '-safe'
  end
  _appsend(false, false, "interp create #{safe_opt} -- #{name}")
end

#deleteObject



293
294
295
# File 'lib/remote-tk.rb', line 293

def delete
  _appsend(false, true, 'exit')
end

#deleted?Boolean

Returns:

  • (Boolean)

Raises:

  • (SecurityError)


297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
# File 'lib/remote-tk.rb', line 297

def deleted?
  raise SecurityError, "no permission to manipulate" unless self.manipulable?

  if @displayof
    lst = @interp._invoke_without_enc('winfo', 'interps', 
                                      '-displayof', @displayof)
  else
    lst = @interp._invoke_without_enc('winfo', 'interps')
  end
  # unless @interp._split_tklist(lst).index(@remote)
  unless @interp._split_tklist(lst).index(_toUTF8(@remote))
    true
  else
    false
  end
end

#do_one_evant(flag = nil) ⇒ Object



463
464
465
# File 'lib/remote-tk.rb', line 463

def do_one_evant(flag = nil)
  fail RuntimeError, 'not support "do_one_event" on the remote interpreter'
end

#get_eventloop_tickObject



475
476
477
# File 'lib/remote-tk.rb', line 475

def get_eventloop_tick
  fail RuntimeError, 'not support "get_eventloop_tick" on the remote interpreter'
end

#get_eventloop_weightObject



487
488
489
# File 'lib/remote-tk.rb', line 487

def get_eventloop_weight
  fail RuntimeError, 'not support "get_eventloop_weight" on the remote interpreter'
end

#get_no_event_waitObject



481
482
483
# File 'lib/remote-tk.rb', line 481

def get_no_event_wait
  fail RuntimeError, 'not support "get_no_event_wait" on the remote interpreter'
end

#has_mainwindow?Boolean

Returns:

  • (Boolean)

Raises:

  • (SecurityError)


314
315
316
317
318
319
320
321
322
323
324
325
326
327
# File 'lib/remote-tk.rb', line 314

def has_mainwindow?
  raise SecurityError, "no permission to manipulate" unless self.manipulable?

  begin
    inf = @interp._invoke_without_enc('info', 'command', '.')
  rescue Exception
    return nil
  end
  if !inf.kind_of?(String) || inf != '.'
    false
  else
    true
  end
end

#invalid_namespace?Boolean

Returns:

  • (Boolean)


329
330
331
# File 'lib/remote-tk.rb', line 329

def invalid_namespace?
  false
end

#is_rubytk?Boolean

Returns:

  • (Boolean)


230
231
232
233
234
# File 'lib/remote-tk.rb', line 230

def is_rubytk?
  return false if _appsend(false, false, 'info', 'command', 'ruby') == ""
  [ _appsend(false, false, 'ruby', 'RUBY_VERSION'), 
    _appsend(false, false, 'set', 'tk_patchLevel') ]
end

#mainloopObject



457
458
459
# File 'lib/remote-tk.rb', line 457

def mainloop
  fail RuntimeError, 'not support "mainloop" on the remote interpreter'
end

#mainloop_abort_on_exceptionObject



466
467
468
# File 'lib/remote-tk.rb', line 466

def mainloop_abort_on_exception
  fail RuntimeError, 'not support "mainloop_abort_on_exception" on the remote interpreter'
end

#mainloop_abort_on_exception=(mode) ⇒ Object



469
470
471
# File 'lib/remote-tk.rb', line 469

def mainloop_abort_on_exception=(mode)
  fail RuntimeError, 'not support "mainloop_abort_on_exception=" on the remote interpreter'
end

#mainloop_watchdogObject



460
461
462
# File 'lib/remote-tk.rb', line 460

def mainloop_watchdog
  fail RuntimeError, 'not support "mainloop_watchdog" on the remote interpreter'
end

#make_safeObject



273
274
275
# File 'lib/remote-tk.rb', line 273

def make_safe
  fail RuntimeError, 'cannot change safe mode of the remote interpreter'
end

#manipulable?Boolean

Returns:

  • (Boolean)


135
136
137
138
# File 'lib/remote-tk.rb', line 135

def manipulable?
  return true if (Thread.current.group == ThreadGroup::Default)
  MultiTkIp.__getip == @interp && ! @interp.safe?
end

#rb_appsend(async, *args) ⇒ Object

Raises:

  • (SecurityError)


250
251
252
253
254
255
256
257
258
259
260
261
262
# File 'lib/remote-tk.rb', line 250

def rb_appsend(async, *args)
  raise SecurityError, "no permission to manipulate" unless self.manipulable?

  if async != true && async != false && async != nil
    args.unshift(async)
    async = false
  end
  if @displayof
    Tk.rb_appsend_displayof(@remote, @displayof, async, *args)
  else
    Tk.rb_appsend(@remote, async, *args)
  end
end

#ready?(timeout = 5) ⇒ Boolean

Returns:

  • (Boolean)


223
224
225
226
227
228
# File 'lib/remote-tk.rb', line 223

def ready?(timeout=5)
  if timeout < 0
    fail ArgumentError, "timeout must be positive number"
  end
  _available_check(timeout)
end

#restartObject



333
334
335
# File 'lib/remote-tk.rb', line 333

def restart
  fail RuntimeError, 'cannot restart the remote interpreter'
end

#safe?Boolean

Returns:

  • (Boolean)


277
278
279
# File 'lib/remote-tk.rb', line 277

def safe?
  _appsend(false, false, 'interp issafe')
end

#safe_base?Boolean

Returns:

  • (Boolean)


281
282
283
# File 'lib/remote-tk.rb', line 281

def safe_base?
  false
end

#set_eventloop_tick(*args) ⇒ Object



472
473
474
# File 'lib/remote-tk.rb', line 472

def set_eventloop_tick(*args)
  fail RuntimeError, 'not support "set_eventloop_tick" on the remote interpreter'
end

#set_eventloop_weight(*args) ⇒ Object



484
485
486
# File 'lib/remote-tk.rb', line 484

def set_eventloop_weight(*args)
  fail RuntimeError, 'not support "set_eventloop_weight" on the remote interpreter'
end

#set_no_event_wait(*args) ⇒ Object



478
479
480
# File 'lib/remote-tk.rb', line 478

def set_no_event_wait(*args)
  fail RuntimeError, 'not support "set_no_event_wait" on the remote interpreter'
end