Class: NFS::SUNRPC::Program
- Inherits:
-
Object
- Object
- NFS::SUNRPC::Program
- Defined in:
- lib/nfs/sunrpc/program.rb
Instance Attribute Summary collapse
-
#high ⇒ Object
readonly
Returns the value of attribute high.
-
#low ⇒ Object
readonly
Returns the value of attribute low.
-
#number ⇒ Object
readonly
Returns the value of attribute number.
Instance Method Summary collapse
- #add_version(number, ver) ⇒ Object
- #call(ver, procedure, arg, cred, verf) ⇒ Object
- #dup ⇒ Object
- #each_version(&block) ⇒ Object
- #get_version(ver) ⇒ Object
-
#initialize(number, &block) ⇒ Program
constructor
A new instance of Program.
- #on_call(ver, procedure_name, &block) ⇒ Object
- #version(ver, &block) ⇒ Object
Constructor Details
#initialize(number, &block) ⇒ Program
Returns a new instance of Program.
6 7 8 9 10 11 |
# File 'lib/nfs/sunrpc/program.rb', line 6 def initialize(number, &block) @number = number @versions = {} @low = @high = nil instance_eval(&block) if block_given? end |
Instance Attribute Details
#high ⇒ Object (readonly)
Returns the value of attribute high.
4 5 6 |
# File 'lib/nfs/sunrpc/program.rb', line 4 def high @high end |
#low ⇒ Object (readonly)
Returns the value of attribute low.
4 5 6 |
# File 'lib/nfs/sunrpc/program.rb', line 4 def low @low end |
#number ⇒ Object (readonly)
Returns the value of attribute number.
4 5 6 |
# File 'lib/nfs/sunrpc/program.rb', line 4 def number @number end |
Instance Method Details
#add_version(number, ver) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/nfs/sunrpc/program.rb', line 21 def add_version(number, ver) if @low.nil? or number < @low @low = number end if @high.nil? or number > @high @high = number end @versions[number] = ver end |
#call(ver, procedure, arg, cred, verf) ⇒ Object
49 50 51 52 53 54 55 |
# File 'lib/nfs/sunrpc/program.rb', line 49 def call(ver, procedure, arg, cred, verf) if !@versions.include?(ver) raise ProgramMismatch.new(2, 2) end @versions[ver].call(procedure, arg, cred, verf) end |
#dup ⇒ Object
13 14 15 16 17 18 19 |
# File 'lib/nfs/sunrpc/program.rb', line 13 def dup self.class.new(@number).tap do |p| @versions.each_pair do |number, version| p.add_version(number, version.dup) end end end |
#each_version(&block) ⇒ Object
41 42 43 |
# File 'lib/nfs/sunrpc/program.rb', line 41 def each_version(&block) @versions.each_value(&block) end |
#get_version(ver) ⇒ Object
37 38 39 |
# File 'lib/nfs/sunrpc/program.rb', line 37 def get_version(ver) @versions[ver] end |
#on_call(ver, procedure_name, &block) ⇒ Object
45 46 47 |
# File 'lib/nfs/sunrpc/program.rb', line 45 def on_call(ver, procedure_name, &block) @versions[ver].on_call(procedure_name, &block) end |
#version(ver, &block) ⇒ Object
33 34 35 |
# File 'lib/nfs/sunrpc/program.rb', line 33 def version(ver, &block) add_version(ver, Version.new(ver, &block)) end |