Class: Omnizip::IO::StreamManager

Inherits:
Object
  • Object
show all
Defined in:
lib/omnizip/io/stream_manager.rb

Overview

Manages I/O operations and wraps various source types.

This class provides a unified interface for different I/O sources including files, IO objects, and strings.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(source, mode: "rb") ⇒ StreamManager

Initialize stream manager.

Parameters:

  • source (String, IO, File, StringIO)

    Input source

  • mode (String) (defaults to: "rb")

    File mode (for file paths)



34
35
36
37
# File 'lib/omnizip/io/stream_manager.rb', line 34

def initialize(source, mode: "rb")
  @source = normalize_source(source, mode)
  @owned = source.is_a?(String) && File.exist?(source)
end

Instance Attribute Details

#sourceObject (readonly)

Returns the value of attribute source.



28
29
30
# File 'lib/omnizip/io/stream_manager.rb', line 28

def source
  @source
end

Instance Method Details

#buffered_input(buffer_size: BufferedInput::DEFAULT_BUFFER_SIZE) ⇒ BufferedInput

Create a buffered input from the source.

Parameters:

  • buffer_size (Integer) (defaults to: BufferedInput::DEFAULT_BUFFER_SIZE)

    Buffer size

Returns:



43
44
45
# File 'lib/omnizip/io/stream_manager.rb', line 43

def buffered_input(buffer_size: BufferedInput::DEFAULT_BUFFER_SIZE)
  BufferedInput.new(@source, buffer_size: buffer_size)
end

#buffered_output(buffer_size: BufferedOutput::DEFAULT_BUFFER_SIZE) ⇒ BufferedOutput

Create a buffered output to the source.

Parameters:

  • buffer_size (Integer) (defaults to: BufferedOutput::DEFAULT_BUFFER_SIZE)

    Buffer size

Returns:



51
52
53
# File 'lib/omnizip/io/stream_manager.rb', line 51

def buffered_output(buffer_size: BufferedOutput::DEFAULT_BUFFER_SIZE)
  BufferedOutput.new(@source, buffer_size: buffer_size)
end

#closevoid

This method returns an undefined value.

Close the underlying source if owned.



73
74
75
# File 'lib/omnizip/io/stream_manager.rb', line 73

def close
  @source.close if @owned && @source.respond_to?(:close)
end

#eof?Boolean

Check if source is at end.

Returns:

  • (Boolean)

    True if at EOF



80
81
82
# File 'lib/omnizip/io/stream_manager.rb', line 80

def eof?
  @source.eof? if @source.respond_to?(:eof?)
end

#read_allString

Read all data from source.

Returns:

  • (String)

    All data from source



58
59
60
# File 'lib/omnizip/io/stream_manager.rb', line 58

def read_all
  @source.read
end

#write(data) ⇒ Integer

Write data to source.

Parameters:

  • data (String)

    Data to write

Returns:

  • (Integer)

    Number of bytes written



66
67
68
# File 'lib/omnizip/io/stream_manager.rb', line 66

def write(data)
  @source.write(data)
end