Class: OsCtld::SendReceive::Commands::Base

Inherits:
Commands::Base show all
Defined in:
lib/osctld/send_receive/commands/base.rb

Instance Attribute Summary

Attributes inherited from Commands::Base

#client, #client_handler, #id, #opts

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Commands::Base

#call_cmd, #call_cmd!, #error, #error!, #execute, #handled, #indirect?, #initialize, #manipulate, #manipulation_holder, #ok, #progress, #request_stop, run, run!

Constructor Details

This class inherits a constructor from OsCtld::Commands::Base

Class Method Details

.handle(name) ⇒ Object



5
6
7
# File 'lib/osctld/send_receive/commands/base.rb', line 5

def self.handle(name)
  SendReceive::Command.register(name, self)
end

Instance Method Details

#base_executeObject



9
10
11
12
# File 'lib/osctld/send_receive/commands/base.rb', line 9

def base_execute
  validate_protocol_version!
  execute
end

#receive_pipeline_error(mbuffer_status, recv_status) ⇒ Object (protected)



31
32
33
34
35
36
# File 'lib/osctld/send_receive/commands/base.rb', line 31

def receive_pipeline_error(mbuffer_status, recv_status)
  failures = []
  failures << "mbuffer exited with #{mbuffer_status.exitstatus}" if mbuffer_status.exitstatus != 0
  failures << "zfs recv exited with #{recv_status.exitstatus}" if recv_status.exitstatus != 0
  "unable to receive stream, #{failures.join(' and ')}"
end

#validate_protocol_version!Object (protected)



16
17
18
19
20
# File 'lib/osctld/send_receive/commands/base.rb', line 16

def validate_protocol_version!
  return if SendReceive.supported_protocol_version?(opts[:protocol_version])

  error!(SendReceive.protocol_error(opts[:protocol_version]))
end

#validate_send_log_protocol!(ct) ⇒ Object (protected)



22
23
24
25
26
27
28
29
# File 'lib/osctld/send_receive/commands/base.rb', line 22

def validate_send_log_protocol!(ct)
  return if ct.send_log&.protocol_version == opts[:protocol_version]

  error!(
    'send/receive protocol version mismatch, ' \
    "request=#{opts[:protocol_version]} log=#{ct.send_log&.protocol_version.inspect}"
  )
end