Class: NFS::SUNRPC::Version

Inherits:
Object
  • Object
show all
Defined in:
lib/nfs/sunrpc/version.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(number, &block) ⇒ Version

Returns a new instance of Version.



6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/nfs/sunrpc/version.rb', line 6

def initialize(number, &block)
  @number = number
  @procedures = {}
  @procedure_names = {}

  # Add the customary null procedure by default.
  procedure XDR::Void.new, :NULL, 0, XDR::Void.new do
    # do nothing
  end

  instance_eval(&block) if block_given?
end

Instance Attribute Details

#numberObject (readonly)

Returns the value of attribute number.



4
5
6
# File 'lib/nfs/sunrpc/version.rb', line 4

def number
  @number
end

Instance Method Details

#add_procedure(name, number, newproc) ⇒ Object



27
28
29
30
# File 'lib/nfs/sunrpc/version.rb', line 27

def add_procedure(name, number, newproc)
  @procedures[number] = newproc
  @procedure_names[name] = newproc
end

#call(p, arg, cred, verf) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/nfs/sunrpc/version.rb', line 46

def call(p, arg, cred, verf)
  unless @procedures.include?(p)
    raise ProcedureUnavailable
  end

  @procedures[p].call(arg, cred, verf)
end

#dupObject



19
20
21
22
23
24
25
# File 'lib/nfs/sunrpc/version.rb', line 19

def dup
  Version.new(@number).tap do |v|
    @procedure_names.each_pair do |name, procedure|
      v.add_procedure(name, procedure.number, procedure.dup)
    end
  end
end

#get_procedure(procedure_name) ⇒ Object



38
39
40
# File 'lib/nfs/sunrpc/version.rb', line 38

def get_procedure(procedure_name)
  @procedure_names[procedure_name]
end

#on_call(procedure_name, &block) ⇒ Object



42
43
44
# File 'lib/nfs/sunrpc/version.rb', line 42

def on_call(procedure_name, &block)
  @procedure_names[procedure_name].on_call(&block)
end

#procedure(returntype, name, number, argtype, &block) ⇒ Object

The name is required, but just for documentation.



33
34
35
36
# File 'lib/nfs/sunrpc/version.rb', line 33

def procedure(returntype, name, number, argtype, &block)
  newproc = Procedure.new(number, returntype, argtype, &block)
  add_procedure(name, number, newproc)
end