Module: Sinatra::Streaming::Stream

Defined in:
lib/sinatra/streaming.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#appObject

Returns the value of attribute app


89
90
91
# File 'lib/sinatra/streaming.rb', line 89

def app
  @app
end

#closedObject Also known as: closed?

Returns the value of attribute closed


89
90
91
# File 'lib/sinatra/streaming.rb', line 89

def closed
  @closed
end

#linenoObject

Returns the value of attribute lineno


89
90
91
# File 'lib/sinatra/streaming.rb', line 89

def lineno
  @lineno
end

#posObject Also known as: tell

Returns the value of attribute pos


89
90
91
# File 'lib/sinatra/streaming.rb', line 89

def pos
  @pos
end

#transformerObject

Returns the value of attribute transformer


89
90
91
# File 'lib/sinatra/streaming.rb', line 89

def transformer
  @transformer
end

Class Method Details

.extended(obj) ⇒ Object


93
94
95
96
97
# File 'lib/sinatra/streaming.rb', line 93

def self.extended(obj)
  obj.closed, obj.lineno, obj.pos = false, 0, 0
  obj.callback { obj.closed = true }
  obj.errback  { obj.closed = true }
end

Instance Method Details

#<<(data) ⇒ Object

Raises:

  • (IOError)

99
100
101
102
103
104
105
# File 'lib/sinatra/streaming.rb', line 99

def <<(data)
  raise IOError, 'not opened for writing' if closed?
  data = data.to_s
  data = @transformer[data] if @transformer
  @pos += data.bytesize
  super(data)
end

#close_readObject

Raises:

  • (IOError)

153
154
155
# File 'lib/sinatra/streaming.rb', line 153

def close_read
  raise IOError, "closing non-duplex IO for reading"
end

#closed_read?Boolean

Returns:

  • (Boolean)

157
158
159
# File 'lib/sinatra/streaming.rb', line 157

def closed_read?
  true
end

#closed_write?Boolean

Returns:

  • (Boolean)

161
162
163
# File 'lib/sinatra/streaming.rb', line 161

def closed_write?
  closed?
end

#dummyObject Also known as: flush, fsync, internal_encoding, pid


217
# File 'lib/sinatra/streaming.rb', line 217

def dummy(*) end

#eachObject


107
108
109
110
111
# File 'lib/sinatra/streaming.rb', line 107

def each
  # that way body.each.map { ... } works
  return self unless block_given?
  super
end

#enum_not_open_for_readingObject Also known as: chars, each_line, each_byte, each_char, lines


205
206
207
208
# File 'lib/sinatra/streaming.rb', line 205

def enum_not_open_for_reading(*)
  not_open_for_reading if block_given?
  enum_for(:not_open_for_reading)
end

#external_encodingObject


165
166
167
168
169
# File 'lib/sinatra/streaming.rb', line 165

def external_encoding
  Encoding.find settings.default_encoding
rescue NameError
  settings.default_encoding
end

#map(&block) ⇒ Object


113
114
115
116
# File 'lib/sinatra/streaming.rb', line 113

def map(&block)
  # dup would not copy the mixin
  clone.map!(&block)
end

#map!(&block) ⇒ Object


118
119
120
121
122
123
124
125
# File 'lib/sinatra/streaming.rb', line 118

def map!(&block)
  if @transformer
    inner, outer = @transformer, block
    block = proc { |value| outer[inner[value]] }
  end
  @transformer = block
  self
end

135
136
137
138
# File 'lib/sinatra/streaming.rb', line 135

def print(*args)
  args.each { |arg| self << arg }
  nil
end

#printf(format, *args) ⇒ Object


140
141
142
# File 'lib/sinatra/streaming.rb', line 140

def printf(format, *args)
  print(format.to_s % args)
end

#putc(c) ⇒ Object


144
145
146
# File 'lib/sinatra/streaming.rb', line 144

def putc(c)
  print c.chr
end

#puts(*args) ⇒ Object


148
149
150
151
# File 'lib/sinatra/streaming.rb', line 148

def puts(*args)
  args.each { |arg| self << "#{arg}\n" }
  nil
end

#rewindObject


179
180
181
# File 'lib/sinatra/streaming.rb', line 179

def rewind
  @pos = @lineno = 0
end

#seekObject Also known as: sysseek


224
225
226
# File 'lib/sinatra/streaming.rb', line 224

def seek(*)
  0
end

#settingsObject


175
176
177
# File 'lib/sinatra/streaming.rb', line 175

def settings
  app.settings
end

#syncObject


230
231
232
# File 'lib/sinatra/streaming.rb', line 230

def sync
  true
end

#tty?Boolean Also known as: isatty

Returns:

  • (Boolean)

234
235
236
# File 'lib/sinatra/streaming.rb', line 234

def tty?
  false
end

#write(data) ⇒ Object Also known as: syswrite, write_nonblock


127
128
129
130
# File 'lib/sinatra/streaming.rb', line 127

def write(data)
  self << data
  data.to_s.bytesize
end