Sha256: 1f46517139095fedc177641ed48bed05786a627fec46dbddc5354b5055e46192

Contents?: true

Size: 1.13 KB

Versions: 12

Compression:

Stored size: 1.13 KB

Contents

#Author: Piotr Wojcieszonek
#e-mail: piotr@wojcieszonek.pl
# Copyright 22.03.2016 by Piotr Wojcieszonek


module Lib
  module DHCP
    class Option
      module Type
        module String
          def self.included(base)
            base.send :include, InstanceMethods
            base.extend ClassMethods
          end

          def initialize(message)
            oid = self.class.name.split('::').last.sub(/Option/, '').to_i
            super oid, message.to_s
          end

          module InstanceMethods
            def pack
              [@oid, @payload.size, @payload.to_s].pack('C2a*')
            end

            def len
              @payload.size
            end

            def to_s
              @payload.to_s
            end

            def payload=(message)
              @payload = message.to_s
            end
          end

          module ClassMethods
            def unpack(oid, len, payload)
              raise ArgumentError, "Wrong #{Lib::DHCP::Option::NAME[oid]} Option length - #{len}" unless len > 0
              self.new payload#.unpack('a*').first.to_s
            end
          end
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
lib-dhcp-0.2.5 lib/lib/dhcp/options/type/string.rb
lib-dhcp-0.2.4 lib/lib/dhcp/options/type/string.rb
lib-dhcp-0.2.3 lib/lib/dhcp/options/type/string.rb
lib-dhcp-0.2.2 lib/lib/dhcp/options/type/string.rb
lib-dhcp-0.2.1 lib/lib/dhcp/options/type/string.rb
lib-dhcp-0.2.0 lib/lib/dhcp/options/type/string.rb
lib-dhcp-0.1.8 lib/lib/dhcp/options/type/string.rb
lib-dhcp-0.1.4 lib/lib/dhcp/options/type/string.rb
lib-dhcp-0.1.3 lib/lib/dhcp/options/type/string.rb
lib-dhcp-0.1.2 lib/lib/dhcp/options/type/string.rb
lib-dhcp-0.1.1 lib/lib/dhcp/options/type/string.rb
lib-dhcp-0.1.0 lib/lib/dhcp/options/type/string.rb