Class: KineticRuby::PDU
- Inherits:
-
Object
- Object
- KineticRuby::PDU
- Defined in:
- lib/kinetic_pdu.rb
Constant Summary collapse
- HEADER_LENGTH =
version_prefix + protobuf_length + value_length
1 + 4 + 4
Class Method Summary collapse
Instance Method Summary collapse
- #complete? ⇒ Boolean
- #dump ⇒ Object
-
#initialize(logger, raw = nil) ⇒ PDU
constructor
A new instance of PDU.
- #length ⇒ Object (also: #size)
- #parse(raw) ⇒ Object
Constructor Details
#initialize(logger, raw = nil) ⇒ PDU
Returns a new instance of PDU.
9 10 11 12 13 14 15 16 |
# File 'lib/kinetic_pdu.rb', line 9 def initialize(logger, raw=nil) raise "Invalid logger specified!" unless logger @logger = logger @header = nil @protobuf = nil @value = nil parse(raw) unless raw.nil? end |
Class Method Details
.valid_header?(raw) ⇒ Boolean
49 50 51 52 53 54 55 |
# File 'lib/kinetic_pdu.rb', line 49 def self.valid_header?(raw) ( !raw.nil? && raw.length >= HEADER_LENGTH && raw[0] == KineticRuby::Proto::VERSION_PREFIX ) end |
Instance Method Details
#complete? ⇒ Boolean
18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/kinetic_pdu.rb', line 18 def complete? complete = false if @header && @protobuf if @header['valueLength'] == 0 complete = true elsif @value && (@value.length >= @header['valueLength']) complete = true end end return complete end |
#dump ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/kinetic_pdu.rb', line 66 def dump return unless complete? @logger.log('PDU Content', true) # Log the header @logger.log " header:\n" + " version_prefix: #{@header['versionPrefix']}\n" + " protobuf_length: #{@header['protobufLength']}\n" + " value_length: #{@header['valueLength']}\n" # Log the protobuf @logger.log " protobuf:\n" + Proto.to_yaml(@protobuf, ' ') # Log the value payload @logger.log " value: (#{value.length} bytes)\n" if @logger.level >= Logger::LOG_LEVEL_VERBOSE val = @value.dup val_string = '' while !val.empty? val_string += " #{val.slice!(i,8)}\n" end @logger.logv val_string end end |
#length ⇒ Object Also known as: size
57 58 59 60 61 62 63 |
# File 'lib/kinetic_pdu.rb', line 57 def length len = 0 len += HEADER_LENGTH if @header len += @header['protobufLength'] if @protobuf len += @header['valueLength'] if @value return len end |
#parse(raw) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/kinetic_pdu.rb', line 30 def parse(raw) if parse_header(raw) @logger.log 'PDU Header:' @header.each_pair{|k,v| @logger.log " #{k}: #{v}"} if parse_protobuf(raw) @logger.log 'PDU Protobuf:' @protobuf.to_yaml.each_line{|l| @logger.log(' ' + l)} if @header['valueLength'] > 0 && parse_value(raw) @logger.log 'PDU Value:' @logger.log " #{@value.to_s}" end end end return complete? end |