Class: Dommy::WritableStream
- Inherits:
-
Object
- Object
- Dommy::WritableStream
- Defined in:
- lib/dommy/streams.rb
Overview
‘WritableStream` — accepts chunks via a writer; persistence is up to the `underlyingSink`’s ‘write` callback.
Defined Under Namespace
Classes: Error
Instance Method Summary collapse
- #__abort__(reason) ⇒ Object
- #__close__ ⇒ Object
- #__js_call__(method, args) ⇒ Object
- #__js_get__(key) ⇒ Object
- #__write__(chunk) ⇒ Object
- #get_writer ⇒ Object (also: #getWriter)
-
#initialize(window, underlying_sink = nil) ⇒ WritableStream
constructor
A new instance of WritableStream.
- #locked ⇒ Object
Constructor Details
#initialize(window, underlying_sink = nil) ⇒ WritableStream
Returns a new instance of WritableStream.
210 211 212 213 214 215 216 |
# File 'lib/dommy/streams.rb', line 210 def initialize(window, = nil) @window = window @writer = nil @state = :writable @sink = .is_a?(Hash) ? .transform_keys(&:to_s) : {} invoke(@sink["start"], []) end |
Instance Method Details
#__abort__(reason) ⇒ Object
241 242 243 244 245 |
# File 'lib/dommy/streams.rb', line 241 def __abort__(reason) @state = :errored invoke(@sink["abort"], [reason]) PromiseValue.resolve(@window, nil) end |
#__close__ ⇒ Object
235 236 237 238 239 |
# File 'lib/dommy/streams.rb', line 235 def __close__ @state = :closed invoke(@sink["close"], []) PromiseValue.resolve(@window, nil) end |
#__js_call__(method, args) ⇒ Object
254 255 256 257 258 259 260 261 262 263 |
# File 'lib/dommy/streams.rb', line 254 def __js_call__(method, args) case method when "getWriter" get_writer when "close" __close__ when "abort" __abort__(args[0]) end end |
#__js_get__(key) ⇒ Object
247 248 249 250 251 252 |
# File 'lib/dommy/streams.rb', line 247 def __js_get__(key) case key when "locked" locked end end |
#__write__(chunk) ⇒ Object
230 231 232 233 |
# File 'lib/dommy/streams.rb', line 230 def __write__(chunk) invoke(@sink["write"], [chunk]) PromiseValue.resolve(@window, nil) end |
#get_writer ⇒ Object Also known as: getWriter
218 219 220 221 222 |
# File 'lib/dommy/streams.rb', line 218 def get_writer raise Error, "stream locked" if @writer @writer = WritableStreamDefaultWriter.new(self) end |
#locked ⇒ Object
226 227 228 |
# File 'lib/dommy/streams.rb', line 226 def locked !@writer.nil? end |