Sha256: d5a2a3cca4aef0bc08ea38e96dd3a410603fe40bc1e349122e8834af52e75bd1

Contents?: true

Size: 727 Bytes

Versions: 2

Compression:

Stored size: 727 Bytes

Contents

# frozen_string_literal: true

module GrpcKit
  module Transport
    class SendBuffer
      def initialize
        @buffer = nil
        @end_write = false
      end

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

        if @buffer
          @buffer << data
        else
          @buffer = data
        end
      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

2 entries across 2 versions & 1 rubygems

Version Path
grpc_kit-0.1.7 lib/grpc_kit/transport/send_buffer.rb
grpc_kit-0.1.6 lib/grpc_kit/transport/send_buffer.rb