Rev 30 | Blame | Compare with Previous | Last modification | View Log | RSS feed
# encoding: ascii-8bit## Licensed to the Apache Software Foundation (ASF) under one# or more contributor license agreements. See the NOTICE file# distributed with this work for additional information# regarding copyright ownership. The ASF licenses this file# to you under the Apache License, Version 2.0 (the# "License"); you may not use this file except in compliance# with the License. You may obtain a copy of the License at## http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing,# software distributed under the License is distributed on an# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY# KIND, either express or implied. See the License for the# specific language governing permissions and limitations# under the License.#module Thriftclass BufferedTransport < BaseTransportDEFAULT_BUFFER = 4096def initialize(transport)@transport = transport@wbuf = ''@rbuf = ''@index = 0enddef open?return @transport.open?enddef open@transport.openenddef closeflush@transport.closeenddef read(sz)@index += szret = @rbuf.slice(@index - sz, sz) || ''if ret.length == 0@rbuf = @transport.read([sz, DEFAULT_BUFFER].max)@index = szret = @rbuf.slice(0, sz) || ''endretenddef write(buf)@wbuf << bufenddef flushif @wbuf != ''@transport.write(@wbuf)@wbuf = ''end@transport.flushendendclass BufferedTransportFactory < BaseTransportFactorydef get_transport(transport)return BufferedTransport.new(transport)endendend