Sha256: b1b9e8e45c4cd9aaeaa562d81ee7148afe52f352023a5b9177c1ae73aedea5f7
Contents?: true
Size: 872 Bytes
Versions: 8
Compression:
Stored size: 872 Bytes
Contents
# frozen_string_literal: true require 'bundler/setup' require 'polyphony' class Stream def initialize(io) @io = io @buffer = +'' @length = 0 @pos = 0 end def getbyte if @pos == @length return nil if !fill_buffer end byte = @buffer[@pos].getbyte(0) @pos += 1 byte end def getc if @pos == @length return nil if !fill_buffer end char = @buffer[@pos] @pos += 1 char end def ungetc(c) @buffer.insert(@pos, c) @length += 1 c end def gets end def read end def readpartial end private def fill_buffer Polyphony.backend_read(@io, @buffer, 8192, false, -1) @length = @buffer.size end end i, o = IO.pipe s = Stream.new(i) f = spin do loop do b = s.getbyte p getbyte: b s.ungetc(b.to_s) if rand > 0.5 end end o << 'hello' sleep 0.1
Version data entries
8 entries across 8 versions & 1 rubygems