Sha256: e916adf5d508bfd286069b41ecd487784e143b17b042f19ad296055db24a5586

Contents?: true

Size: 959 Bytes

Versions: 2

Compression:

Stored size: 959 Bytes

Contents

# frozen_string_literal: true

module GrpcKit
  module Session
    class Buffer
      attr_accessor :finish

      def initialize(buffer: nil)
        @buffer = buffer
        @end_read = false
        @end_write = false
        @finish = false
        @write_byte_size = 0
      end

      def write(data, last: false)
        end_write if last
        @write_byte_size += data.size

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

      def read(len = nil, last: false)
        end_read if last

        if @buffer.nil?
          return ''
        end

        if len
          @buffer.slice!(0...len)
        else
          @buffer.slice!(0..-1)
        end
      end

      def end_read?
        @end_read
      end

      def end_write?
        @end_write
      end

      def end_read
        @end_read = true
      end

      def end_write
        @end_write = true
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
grpc_kit-0.1.2 lib/grpc_kit/session/buffer.rb
grpc_kit-0.1.1 lib/grpc_kit/session/buffer.rb