Sha256: e451e79c3245d5cc5d91e4c9c9ad87ad5e8e6f3b3e385cd1de73f1b2aef36c77

Contents?: true

Size: 1.35 KB

Versions: 5

Compression:

Stored size: 1.35 KB

Contents

require_relative 'header/sent'
class PacketViaDMEM
  class Sent < Packet

    def initialize packet, log
      @log             = log
      @type            = :sent
      @original        = packet.dup
      @header          = Header::Sent.new
      @popped, @packet = parse_packet packet
    end

    private

    def parse_packet pkt
      head = pkt.shift(4).join.to_i(16)
      @header.msg_type            = (head & 0xffffffff) >> 28
      @header.statistics          = head[27] == 1
      @header.increment_reference = head[26] == 1
      @header.fragment_info       = head[25] == 1
      @header.drop_hash           = head[24] == 1
      @header.decrement_reference = head[23] == 1
      @header.prequeue_priority   = head[22] == 1
      @header.offset              = (head & 0x3fffff) >> 13
      @header.table               = (head & 0x1fff)

      head = pkt.shift(4).join.to_i(16)
      raise Packet::NoPayload, "#{@original.join(' ')} had no payload" unless pkt[0]
      @header.color               = (head & 0x7fffffff) >> 29
      @header.queue_drop_opcode   = (head & 0xcffffff)  >> 27
      @header.queue_system        = (head & 0x3ffffff)  >> 24
      @header.life                = (head & 0x7fffff)   >> 21
      @header.queue_number        = (head & 0x1fffff)

      pop, push = get_pop_push pkt, @header
      popped_and_packet pkt, pop, push
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
packet_via_dmem-0.0.18 lib/packet_via_dmem/sent.rb
packet_via_dmem-0.0.17 lib/packet_via_dmem/sent.rb
packet_via_dmem-0.0.16 lib/packet_via_dmem/sent.rb
packet_via_dmem-0.0.15 lib/packet_via_dmem/sent.rb
packet_via_dmem-0.0.14 lib/packet_via_dmem/sent.rb