Sha256: 7946054bcf977a3b932cf18971a537e6047b3ac785f8b271d1237fa7b103f7c9
Contents?: true
Size: 1.77 KB
Versions: 2
Compression:
Stored size: 1.77 KB
Contents
#!/usr/bin/env ruby # frozen_string_literal: true require "socket" # Wherever this file is installed, locate Scarpe relative to it. This could be an installed gem or a dev repo. SCARPE_DIR = File.join(__dir__, "../..") $LOAD_PATH.prepend(SCARPE_DIR) require "scarpe" require "scarpe/wv_local" # This script exists to create a WebviewDisplayService that can be operated remotely over a socket. if ARGV.length != 1 $stderr.puts("Usage: wv_display_worker.rb tcp_port_num") exit(-1) end class WebviewContainedService < Scarpe::DisplayService::Linkable include Scarpe::Log include Scarpe::WVRelayUtil # Needs Scarpe::Log attr_reader :log def initialize(from, to) super() log_init("WV::DisplayWorker") @i_am = :child @event_subs = [] @wv_display = Scarpe::WebviewDisplayService.new @from = from @to = to @init_done = false # Wait to register our periodic_code until the wrangler exists @event_subs << bind_shoes_event(event_name: "init") do @wv_display.wrangler.periodic_code("datagramProcessor", 0.1) do respond_to_datagram while ready_to_read?(0.0) end @init_done = true end # Subscribe to all event notifications and relay them to the opposite side @event_subs << bind_shoes_event(event_name: :any, target: :any) do |*args, **kwargs| unless kwargs[:relayed] || kwargs["relayed"] kwargs[:relayed] = true send_datagram({ type: :event, args:, kwargs: }) end end # Run for 2.5 seconds to let the app be created and "run" to get called. # Once that happens, Webview will take over the event loop. event_loop_for(2.5) end end s = TCPSocket.new("localhost", ARGV[0].to_i) SERVICE = WebviewContainedService.new(s, s) SERVICE.log.info("Finished event loop. Exiting!")
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
scarpe-0.2.1 | lib/scarpe/wv/wv_display_worker.rb |
scarpe-0.2.0 | lib/scarpe/wv/wv_display_worker.rb |