class NetworkClipboard::ConnectionWrapper
Public Class Methods
new(client,connection)
click to toggle source
# File lib/network_clipboard/client.rb, line 14 def initialize(client,connection) @client = client @connection = connection @read_thread = Thread.new{read_loop} @write_thread = Thread.new{write_loop} @running = true @value = nil end
Public Instance Methods
join()
click to toggle source
# File lib/network_clipboard/client.rb, line 53 def join @read_thread.join @write_thread.join end
read_loop()
click to toggle source
# File lib/network_clipboard/client.rb, line 23 def read_loop while @running begin new_value = @connection.receive() rescue DisconnectedError if @running LOGGER.error("Client #{@connection.remote_client_id} went away") @running = false end break end next if @value == new_value LOGGER.info("Received new clipboard value from #{@connection.remote_client_id}") Clipboard.copy(@value = new_value) end @connection.close_read LOGGER.debug("Read loop completed") end
stop()
click to toggle source
# File lib/network_clipboard/client.rb, line 58 def stop @running = false end
write_loop()
click to toggle source
# File lib/network_clipboard/client.rb, line 42 def write_loop while @running new_value = Clipboard.paste (sleep(2); next) if new_value.nil? or new_value.empty? or @value == new_value LOGGER.info("Sending clipboard value to #{@connection.remote_client_id}") @connection.send(@value = new_value) end @connection.close_write LOGGER.debug("Write loop completed") end