Class: PacketGen::Header::Base::Binding Private

Inherits:
Struct
  • Object
show all
Defined in:
lib/packetgen/header/base.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Simple class to handle a header association

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#keyObject

Returns the value of attribute key

Returns:

  • (Object)

    the current value of key


22
23
24
# File 'lib/packetgen/header/base.rb', line 22

def key
  @key
end

#valueObject

Returns the value of attribute value

Returns:

  • (Object)

    the current value of value


22
23
24
# File 'lib/packetgen/header/base.rb', line 22

def value
  @value
end

Instance Method Details

#check?(fields) ⇒ Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Check fields responds to binding

Parameters:

Returns:

  • (Boolean)

26
27
28
29
30
31
32
33
# File 'lib/packetgen/header/base.rb', line 26

def check?(fields)
  case self[:value]
  when Proc
    self[:value].call fields.send(self[:key])
  else
    fields.send(self[:key]) == self[:value]
  end
end

#set(fields) ⇒ void

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

This method returns an undefined value.

Set fields field to binding value

Parameters:


38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/packetgen/header/base.rb', line 38

def set(fields)
  case self[:value]
  when Proc
    fields.send "#{self[:key]}=", self[:value].call(nil)
  else
    attr = if self[:key].to_s.end_with?('?')
             self[:key].to_s[0..-2]
           else
             self[:key]
           end
    fields.send "#{attr}=", self[:value]
  end
end