Parent

Docker::Messages

This class represents all the messages either received by chunks from attach

Attributes

buffer[RW]
stderr_messages[RW]
stdout_messages[RW]

Public Class Methods

new(stdout_messages = [], stderr_messages = [], buffer = "") click to toggle source
# File lib/docker/messages.rb, line 6
def initialize(stdout_messages = [], stderr_messages = [], buffer = "")
  @stdout_messages = stdout_messages
  @stderr_messages = stderr_messages
  @buffer = buffer
end

Public Instance Methods

add_message(source, message) click to toggle source
# File lib/docker/messages.rb, line 12
def add_message(source, message)
  case source
  when 1
    stdout_messages << message
  when 2
    stderr_messages << message
  end
end
append(messages) click to toggle source
# File lib/docker/messages.rb, line 37
def append(messages)
  @stdout_messages += messages.stdout_messages
  @stderr_messages += messages.stderr_messages
end
decipher_messages(body) click to toggle source

Method to break apart application/vnd.docker.raw-stream headers

# File lib/docker/messages.rb, line 43
def decipher_messages(body)
  raw_text = buffer + body.dup
  messages = Docker::Messages.new
  while !raw_text.empty?
    messages.get_message(raw_text)
  end

  messages
end
get_message(raw_text) click to toggle source
# File lib/docker/messages.rb, line 21
def get_message(raw_text)
  header = raw_text.slice!(0,8)
  if header.length < 8
    @buffer = header
    return
  end
  type, length = header.unpack("CxxxN")

  message = raw_text.slice!(0,length)
  if message.length < length
    @buffer = header + message
  else
    add_message(type, message)
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.