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

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

Returns:



1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
# File 'lib/amq/protocol/client.rb', line 1767

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)


1761
1762
1763
# File 'lib/amq/protocol/client.rb', line 1761

def self.has_content?
  true
end