Sha256: be98278a7f44e0d4cb5c4a5c7370c0401242f6a16a45de5792d57d71fc5a062b
Contents?: true
Size: 1.3 KB
Versions: 4
Compression:
Stored size: 1.3 KB
Contents
module VagrantPlugins module CommandServe module Util # Extracts connection information from a proto # and establishes a new connection module Connector def connect(proto:, broker:) if(proto.addr.to_s.empty?) conn = broker.dial(proto.stream_id) else conn = proto.addr.to_s.start_with?('/') ? "unix:#{proto.addr}" : proto.addr.to_s end conn.to_s end def load(raw, broker:) if raw.is_a?(String) n = self.respond_to?(:sdk_alias) ? self.sdk_alias : self.name lookup = n.split("::") idx = lookup.index("Client") if idx lookup.slice!(0, idx+1) end klass = lookup.inject(SDK::Args) do |const, name| const&.const_get(name) end if !klass raise NameError, "failed to locate required protobuf constant `SDK::Args::#{n}'\n\nArgs: #{SDK::Args.constants.inspect}" end begin raw = klass.decode(raw) rescue raw = klass.decode_json(raw) end end self.new(connect(proto: raw, broker: broker), raw, broker) end end end end end
Version data entries
4 entries across 4 versions & 2 rubygems