Class: AMQ::Protocol::Basic::Publish

Inherits:
Method
  • Object
show all
Defined in:
lib/amq/protocol/client.rb

Class Method Summary collapse

Methods inherited from Method

encode_body, index, inherited, instantiate, method_id, methods, name, split_headers

Class Method Details

.encode(channel, payload, user_headers, exchange, routing_key, mandatory, immediate, frame_size) ⇒ Object

“ticket = 0”, “exchange = EMPTY_STRING”, “routing_key = EMPTY_STRING”, “mandatory = false”, “immediate = false”, “user_headers = nil”, “payload = ”“”, “frame_size = nil”

Returns:



1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
# File 'lib/amq/protocol/client.rb', line 1674

def self.encode(channel, payload, user_headers, exchange, routing_key, mandatory, immediate, frame_size)
  ticket = 0
  buffer = ""
  buffer << @packed_indexes
  buffer << [ticket].pack(PACK_UINT16)
  buffer << exchange.to_s.bytesize.chr
  buffer << exchange.to_s
  buffer << routing_key.to_s.bytesize.chr
  buffer << routing_key.to_s
  bit_buffer = 0
  bit_buffer = bit_buffer | (1 << 0) if mandatory
  bit_buffer = bit_buffer | (1 << 1) if immediate
  buffer << [bit_buffer].pack(PACK_CHAR)
  frames = [MethodFrame.new(buffer, channel)]
  properties, headers = self.split_headers(user_headers)
  # TODO: what shall I do with the headers?
  if properties.nil? or properties.empty?
    raise RuntimeError.new("Properties can not be empty!") # TODO: or can they?
  end
  properties_payload = Basic.encode_properties(payload.bytesize, properties)
  frames << HeaderFrame.new(properties_payload, channel)
  frames + self.encode_body(payload, channel, frame_size)
end

.has_content?Boolean

Returns:

  • (Boolean)


1668
1669
1670
# File 'lib/amq/protocol/client.rb', line 1668

def self.has_content?
  true
end