Sha256: 3ff5209d1be97f03122acf0b7c699377d0549470b6b94a2ea71af6c8c6435bfe

Contents?: true

Size: 920 Bytes

Versions: 8

Compression:

Stored size: 920 Bytes

Contents

# frozen_string_literal: true

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

      # @param data [String]
      # @return [void]
      def write(data)
        @buffer << data
      end

      # @param size [Integer,nil]
      # @param last [Boolean]
      # @return [String,nil]
      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

      # @return [Boolean]
      def end_read?
        @end
      end

      # @return [void]
      def end_read
        @end = true
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
grpc_kit-0.2.1 lib/grpc_kit/session/recv_buffer.rb
grpc_kit-0.2.0 lib/grpc_kit/session/recv_buffer.rb
grpc_kit-0.1.14 lib/grpc_kit/session/recv_buffer.rb
grpc_kit-0.1.13 lib/grpc_kit/session/recv_buffer.rb
grpc_kit-0.1.12 lib/grpc_kit/session/recv_buffer.rb
grpc_kit-0.1.11 lib/grpc_kit/session/recv_buffer.rb
grpc_kit-0.1.10 lib/grpc_kit/session/recv_buffer.rb
grpc_kit-0.1.9 lib/grpc_kit/session/recv_buffer.rb