Sha256: 6f53667ffe09d40945d82b713101b9c1c558ddf176fa34468551a17507d47190

Contents?: true

Size: 761 Bytes

Versions: 3

Compression:

Stored size: 761 Bytes

Contents

# frozen_string_literal: true

module GrpcKit
  module Streams
    class SendBuffer
      def initialize
        @buffer = nil
        @pos = 0
        @end_write = false
      end

      def write(data, last: false)
        end_write if last

        if @buffer
          @buffer << data
        else
          @buffer = data
        end

        data.size
      end

      def end_write
        @end_write = true
      end

      def end_write?
        @end_write
      end

      def read(size)
        if @buffer.nil?
          return false
        end

        data = @buffer.slice!(0, size)
        if !data.empty?
          data
        elsif end_write?
          nil # EOF
        else
          false # deferred
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
grpc_kit-0.1.3 lib/grpc_kit/streams/send_buffer.rb
grpc_kit-0.1.2 lib/grpc_kit/streams/send_buffer.rb
grpc_kit-0.1.1 lib/grpc_kit/streams/send_buffer.rb