Sha256: 48048cb576941ce2d48e2ee5ca824ad6ea2483e4c8ede4c41070e92af6c1c274

Contents?: true

Size: 726 Bytes

Versions: 1

Compression:

Stored size: 726 Bytes

Contents

# frozen_string_literal: true

module GrpcKit
  module Session
    class RecvBuffer
      def initialize
        @buffer = +''.b
        @end = false
      end

      def write(data)
        @buffer << data
      end

      def read(size = nil, last: false)
        return nil if @buffer.empty?

        end_read if last

        if size.nil? || @buffer.bytesize < size
          buf = @buffer
          @buffer = ''.b
          buf
        else
          @buffer.freeze
          rbuf = @buffer.byteslice(0, size)
          @buffer = @buffer.byteslice(size, @buffer.bytesize)
          rbuf
        end
      end

      def end_read?
        @end
      end

      def end_read
        @end = true
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
grpc_kit-0.1.8 lib/grpc_kit/session/recv_buffer.rb