Finish renaming/deprecating classes. Change a few more filenames, like thrift/transport/ttransport -> thrift/transport
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@668924 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/rb/lib/thrift.rb b/lib/rb/lib/thrift.rb
index 9c9c4b2..2e747d4 100644
--- a/lib/rb/lib/thrift.rb
+++ b/lib/rb/lib/thrift.rb
@@ -21,7 +21,7 @@
require 'thrift/processor'
require 'thrift/client'
require 'thrift/struct'
-require 'thrift/protocol/tprotocol'
-require 'thrift/transport/tsocket'
-require 'thrift/transport/ttransport'
-require 'thrift/server/tserver'
+require 'thrift/protocol'
+require 'thrift/transport/socket'
+require 'thrift/transport'
+require 'thrift/server'
diff --git a/lib/rb/lib/thrift/protocol.rb b/lib/rb/lib/thrift/protocol.rb
index e8a6cb7..23433be 100644
--- a/lib/rb/lib/thrift/protocol.rb
+++ b/lib/rb/lib/thrift/protocol.rb
@@ -255,9 +255,10 @@
end
deprecate_class! :TProtocol => Protocol
-end
-class TProtocolFactory
- def get_protocol(trans); nil; end
- deprecate! :getProtocol => :get_protocol
+ class ProtocolFactory
+ def get_protocol(trans); nil; end
+ deprecate! :getProtocol => :get_protocol
+ end
+ deprecate_class! :TProtocolFactory => ProtocolFactory
end
diff --git a/lib/rb/lib/thrift/protocol/binaryprotocol.rb b/lib/rb/lib/thrift/protocol/binaryprotocol.rb
index 682ecbf..b344faf 100644
--- a/lib/rb/lib/thrift/protocol/binaryprotocol.rb
+++ b/lib/rb/lib/thrift/protocol/binaryprotocol.rb
@@ -181,11 +181,11 @@
end
deprecate_class! :TBinaryProtocol => BinaryProtocol
-end
-class TBinaryProtocolFactory < TProtocolFactory
- def get_protocol(trans)
- return TBinaryProtocol.new(trans)
+ class BinaryProtocolFactory < ProtocolFactory
+ def get_protocol(trans)
+ return TBinaryProtocol.new(trans)
+ end
end
+ deprecate_class! :TBinaryProtocolFactory => BinaryProtocolFactory
end
-
diff --git a/lib/rb/lib/thrift/protocol/tbinaryprotocol.rb b/lib/rb/lib/thrift/protocol/tbinaryprotocol.rb
index 038e190..bde3169 100644
--- a/lib/rb/lib/thrift/protocol/tbinaryprotocol.rb
+++ b/lib/rb/lib/thrift/protocol/tbinaryprotocol.rb
@@ -1 +1,2 @@
+require 'thrift/deprecation'
require 'thrift/protocol/binaryprotocol'
diff --git a/lib/rb/lib/thrift/protocol/tprotocol.rb b/lib/rb/lib/thrift/protocol/tprotocol.rb
index 48bf261..235a34b 100644
--- a/lib/rb/lib/thrift/protocol/tprotocol.rb
+++ b/lib/rb/lib/thrift/protocol/tprotocol.rb
@@ -1 +1,2 @@
+require 'thrift/deprecation'
require 'thrift/protocol'
diff --git a/lib/rb/lib/thrift/server.rb b/lib/rb/lib/thrift/server.rb
new file mode 100644
index 0000000..d19a5b2
--- /dev/null
+++ b/lib/rb/lib/thrift/server.rb
@@ -0,0 +1,141 @@
+# Copyright (c) 2006- Facebook
+# Distributed under the Thrift Software License
+#
+# See accompanying file LICENSE or visit the Thrift site at:
+# http://developers.facebook.com/thrift/
+#
+# Author: Mark Slee <mcslee@facebook.com>
+#
+require 'thrift/protocol'
+require 'thrift/protocol/binaryprotocol'
+require 'thrift/transport'
+
+module Thrift
+ class Server
+ def initialize(processor, serverTransport, transportFactory=nil, protocolFactory=nil)
+ @processor = processor
+ @serverTransport = serverTransport
+ @transportFactory = transportFactory ? transportFactory : Thrift::TransportFactory.new()
+ @protocolFactory = protocolFactory ? protocolFactory : Thrift::BinaryProtocolFactory.new()
+ end
+
+ def serve(); nil; end
+ end
+ deprecate_class! :TServer => Server
+
+ class SimpleServer < Server
+ def initialize(processor, serverTransport, transportFactory=nil, protocolFactory=nil)
+ super(processor, serverTransport, transportFactory, protocolFactory)
+ end
+
+ def serve()
+ begin
+ @serverTransport.listen()
+ while (true)
+ client = @serverTransport.accept()
+ trans = @transportFactory.get_transport(client)
+ prot = @protocolFactory.get_protocol(trans)
+ begin
+ while (true)
+ @processor.process(prot, prot)
+ end
+ rescue TTransportException, Thrift::ProtocolException => ttx
+ #print ttx,"\n"
+ ensure
+ trans.close()
+ end
+ end
+ ensure
+ @serverTransport.close()
+ end
+ end
+ end
+ deprecate_class! :TSimpleServer => SimpleServer
+end
+
+begin
+ require 'fastthread'
+rescue LoadError
+ require 'thread'
+end
+
+module Thrift
+ class ThreadedServer < Server
+ def serve()
+ begin
+ @serverTransport.listen()
+ while (true)
+ client = @serverTransport.accept()
+ trans = @transportFactory.get_transport(client)
+ prot = @protocolFactory.get_protocol(trans)
+ Thread.new(prot, trans) do |p, t|
+ begin
+ while (true)
+ @processor.process(p, p)
+ end
+ rescue TTransportException, Thrift::ProtocolException => e
+ ensure
+ t.close()
+ end
+ end
+ end
+ ensure
+ @serverTransport.close()
+ end
+ end
+ end
+ deprecate_class! :TThreadedServer => ThreadedServer
+
+ class ThreadPoolServer < Server
+ def initialize(processor, serverTransport, transportFactory=nil, protocolFactory=nil, num=20)
+ super(processor, serverTransport, transportFactory, protocolFactory)
+ @thread_q = SizedQueue.new(num)
+ @exception_q = Queue.new
+ @running = false
+ end
+
+ ## exceptions that happen in worker threads will be relayed here and
+ ## must be caught. 'retry' can be used to continue. (threads will
+ ## continue to run while the exception is being handled.)
+ def rescuable_serve
+ Thread.new { serve } unless @running
+ raise @exception_q.pop
+ end
+
+ ## exceptions that happen in worker threads simply cause that thread
+ ## to die and another to be spawned in its place.
+ def serve
+ @serverTransport.listen()
+
+ begin
+ while (true)
+ @thread_q.push(:token)
+ Thread.new do
+ begin
+ while (true)
+ client = @serverTransport.accept()
+ trans = @transportFactory.get_transport(client)
+ prot = @protocolFactory.get_protocol(trans)
+ begin
+ while (true)
+ @processor.process(prot, prot)
+ end
+ rescue TTransportException, Thrift::ProtocolException => e
+ ensure
+ trans.close()
+ end
+ end
+ rescue Exception => e
+ @exception_q.push(e)
+ ensure
+ @thread_q.pop() # thread died!
+ end
+ end
+ end
+ ensure
+ @serverTransport.close()
+ end
+ end
+ end
+ deprecate_class! :TThreadPoolServer => ThreadPoolServer
+end
diff --git a/lib/rb/lib/thrift/server/httpserver.rb b/lib/rb/lib/thrift/server/httpserver.rb
new file mode 100644
index 0000000..c92e0ca
--- /dev/null
+++ b/lib/rb/lib/thrift/server/httpserver.rb
@@ -0,0 +1,44 @@
+require 'thrift/protocol'
+require 'thrift/protocol/binaryprotocol'
+require 'thrift/transport'
+
+require 'mongrel'
+
+## Sticks a service on a URL, using mongrel to do the HTTP work
+module Thrift
+ class SimpleMongrelHTTPServer
+ class Handler < Mongrel::HttpHandler
+ def initialize(processor, protocol_factory)
+ @processor = processor
+ @protocol_factory = protocol_factory
+ end
+
+ def process(request, response)
+ unless request.params["REQUEST_METHOD"] == "POST"
+ response.start(404) { } # better way?
+ return
+ end
+ response.start(200) do |head, out|
+ head["Content-Type"] = "application/x-thrift"
+ transport = TIOStreamTransport.new request.body, out
+ protocol = @protocol_factory.get_protocol transport
+ @processor.process protocol, protocol
+ end
+ end
+ end
+
+ def initialize(processor, opts={})
+ port = opts[:port] || 80
+ ip = opts[:ip] || "0.0.0.0"
+ path = opts[:path] || ""
+ protocol_factory = opts[:protocol_factory] || TBinaryProtocolFactory.new
+ @server = Mongrel::HttpServer.new ip, port
+ @server.register "/#{path}", Handler.new(processor, protocol_factory)
+ end
+
+ def serve
+ @server.run.join
+ end
+ end
+ deprecate_class! :TSimpleMongrelHTTPServer => SimpleMongrelHTTPServer
+end
diff --git a/lib/rb/lib/thrift/server/thttpserver.rb b/lib/rb/lib/thrift/server/thttpserver.rb
index d6e85a1..0eb7ea6 100644
--- a/lib/rb/lib/thrift/server/thttpserver.rb
+++ b/lib/rb/lib/thrift/server/thttpserver.rb
@@ -1,43 +1,2 @@
-#!/usr/bin/env ruby
-
-require 'thrift/protocol/tprotocol'
-require 'thrift/protocol/tbinaryprotocol'
-require 'thrift/transport/ttransport'
-
-require 'mongrel'
-
-## Sticks a service on a URL, using mongrel to do the HTTP work
-class TSimpleMongrelHTTPServer
- class Handler < Mongrel::HttpHandler
- def initialize(processor, protocol_factory)
- @processor = processor
- @protocol_factory = protocol_factory
- end
-
- def process(request, response)
- unless request.params["REQUEST_METHOD"] == "POST"
- response.start(404) { } # better way?
- return
- end
- response.start(200) do |head, out|
- head["Content-Type"] = "application/x-thrift"
- transport = TIOStreamTransport.new request.body, out
- protocol = @protocol_factory.get_protocol transport
- @processor.process protocol, protocol
- end
- end
- end
-
- def initialize(processor, opts={})
- port = opts[:port] || 80
- ip = opts[:ip] || "0.0.0.0"
- path = opts[:path] || ""
- protocol_factory = opts[:protocol_factory] || TBinaryProtocolFactory.new
- @server = Mongrel::HttpServer.new ip, port
- @server.register "/#{path}", Handler.new(processor, protocol_factory)
- end
-
- def serve
- @server.run.join
- end
-end
+require 'thrift/deprecation'
+require 'thrift/server/httpserver'
diff --git a/lib/rb/lib/thrift/server/tserver.rb b/lib/rb/lib/thrift/server/tserver.rb
index 6e3830a..5903bce 100644
--- a/lib/rb/lib/thrift/server/tserver.rb
+++ b/lib/rb/lib/thrift/server/tserver.rb
@@ -1,139 +1,2 @@
-#!/usr/bin/env ruby
-#
-# Copyright (c) 2006- Facebook
-# Distributed under the Thrift Software License
-#
-# See accompanying file LICENSE or visit the Thrift site at:
-# http://developers.facebook.com/thrift/
-#
-# Author: Mark Slee <mcslee@facebook.com>
-#
-require 'thrift/protocol/tprotocol'
-require 'thrift/protocol/tbinaryprotocol'
-require 'thrift/transport/ttransport'
-
-class TServer
-
- def initialize(processor, serverTransport, transportFactory=nil, protocolFactory=nil)
- @processor = processor
- @serverTransport = serverTransport
- @transportFactory = transportFactory ? transportFactory : TTransportFactory.new()
- @protocolFactory = protocolFactory ? protocolFactory : TBinaryProtocolFactory.new()
- end
-
- def serve(); nil; end
-
-end
-
-class TSimpleServer < TServer
-
- def initialize(processor, serverTransport, transportFactory=nil, protocolFactory=nil)
- super(processor, serverTransport, transportFactory, protocolFactory)
- end
-
- def serve()
- begin
- @serverTransport.listen()
- while (true)
- client = @serverTransport.accept()
- trans = @transportFactory.get_transport(client)
- prot = @protocolFactory.get_protocol(trans)
- begin
- while (true)
- @processor.process(prot, prot)
- end
- rescue TTransportException, Thrift::ProtocolException => ttx
- #print ttx,"\n"
- ensure
- trans.close()
- end
- end
- ensure
- @serverTransport.close()
- end
- end
-end
-
-begin
- require 'fastthread'
-rescue LoadError
- require 'thread'
-end
-
-class TThreadedServer < TServer
- def serve()
- begin
- @serverTransport.listen()
- while (true)
- client = @serverTransport.accept()
- trans = @transportFactory.get_transport(client)
- prot = @protocolFactory.get_protocol(trans)
- Thread.new(prot, trans) do |p, t|
- begin
- while (true)
- @processor.process(p, p)
- end
- rescue TTransportException, Thrift::ProtocolException => e
- ensure
- t.close()
- end
- end
- end
- ensure
- @serverTransport.close()
- end
- end
-end
-
-class TThreadPoolServer < TServer
- def initialize(processor, serverTransport, transportFactory=nil, protocolFactory=nil, num=20)
- super(processor, serverTransport, transportFactory, protocolFactory)
- @thread_q = SizedQueue.new(num)
- @exception_q = Queue.new
- @running = false
- end
-
- ## exceptions that happen in worker threads will be relayed here and
- ## must be caught. 'retry' can be used to continue. (threads will
- ## continue to run while the exception is being handled.)
- def rescuable_serve
- Thread.new { serve } unless @running
- raise @exception_q.pop
- end
-
- ## exceptions that happen in worker threads simply cause that thread
- ## to die and another to be spawned in its place.
- def serve
- @serverTransport.listen()
-
- begin
- while (true)
- @thread_q.push(:token)
- Thread.new do
- begin
- while (true)
- client = @serverTransport.accept()
- trans = @transportFactory.get_transport(client)
- prot = @protocolFactory.get_protocol(trans)
- begin
- while (true)
- @processor.process(prot, prot)
- end
- rescue TTransportException, Thrift::ProtocolException => e
- ensure
- trans.close()
- end
- end
- rescue Exception => e
- @exception_q.push(e)
- ensure
- @thread_q.pop() # thread died!
- end
- end
- end
- ensure
- @serverTransport.close()
- end
- end
-end
-
+require 'thrift/deprecation'
+require 'thrift/server'
diff --git a/lib/rb/lib/thrift/transport.rb b/lib/rb/lib/thrift/transport.rb
new file mode 100644
index 0000000..cc45fac
--- /dev/null
+++ b/lib/rb/lib/thrift/transport.rb
@@ -0,0 +1,290 @@
+# Copyright (c) 2006- Facebook
+# Distributed under the Thrift Software License
+#
+# See accompanying file LICENSE or visit the Thrift site at:
+# http://developers.facebook.com/thrift/
+#
+# Author: Mark Slee <mcslee@facebook.com>
+#
+
+module Thrift
+ class TransportException < Exception
+ UNKNOWN = 0
+ NOT_OPEN = 1
+ ALREADY_OPEN = 2
+ TIMED_OUT = 3
+ END_OF_FILE = 4
+
+ attr_reader :type
+
+ def initialize(type=UNKNOWN, message=nil)
+ super(message)
+ @type = type
+ end
+ end
+ deprecate_class! :TTransportException => TransportException
+
+# Transport is basically an abstract class, but isn't raising NotImplementedError
+# TODO: Think about if this is the right thing - Kevin Clark - 3/27/08
+ class Transport
+ def open?; end
+ deprecate! :isOpen => :open?
+ deprecate! :is_open? => :open?
+
+ def open; end
+
+ def close; end
+
+ def read(sz); end
+
+ def read_all(size)
+ buff = ''
+ have = 0
+
+ while (have < size)
+ chunk = read(size - have)
+ have += chunk.length
+ buff << chunk
+ end
+
+ buff
+ end
+ deprecate! :readAll => :read_all
+
+ def write(buf); end
+
+ def flush; end
+ end
+ deprecate_class! :TTransport => Transport
+
+ class ServerTransport
+ def listen(); nil; end
+
+ def accept(); nil; end
+
+ def close(); nil; end
+ end
+ deprecate_class! :TServerTransport => ServerTransport
+
+ class TransportFactory
+ def get_transport(trans)
+ return trans
+ end
+ deprecate! :getTransport => :get_transport
+ end
+ deprecate_class! :TTransportFactory => TransportFactory
+
+ class BufferedTransport < Transport
+ def initialize(transport)
+ @transport = transport
+ @wbuf = ''
+ end
+
+ def open?()
+ return @transport.open?()
+ end
+
+ def open()
+ @transport.open()
+ end
+
+ def close()
+ @transport.close()
+ end
+
+ def read(sz)
+ return @transport.read(sz)
+ end
+
+ def write(buf)
+ @wbuf << buf
+ end
+
+ def flush()
+ @transport.write(@wbuf)
+ @transport.flush()
+ @wbuf = ''
+ end
+ end
+ deprecate_class! :TBufferedTransport => BufferedTransport
+
+ class BufferedTransportFactory < TransportFactory
+ def get_transport(transport)
+ return BufferedTransport.new(transport)
+ end
+ end
+ deprecate_class! :TBufferedTransportFactory => BufferedTransportFactory
+
+ class FramedTransport < Transport
+ def initialize(transport, read=true, write=true)
+ @transport = transport
+ @rbuf = ''
+ @wbuf = ''
+ @read = read
+ @write = write
+ end
+
+ def open?()
+ return @transport.open?
+ end
+
+ def open()
+ @transport.open
+ end
+
+ def close()
+ @transport.close
+ end
+
+ def read(sz)
+ if !@read
+ return @transport.read(sz)
+ end
+
+ if (sz <= 0)
+ return ''
+ end
+
+ if (@rbuf.length == 0)
+ read_frame
+ end
+
+ # return full buf
+ if (sz > @rbuf.length)
+ out = @rbuf
+ @rbuf = ''
+ return out
+ end
+
+ # Return substr
+ out = @rbuf.slice(0, sz)
+ @rbuf = @rbuf.slice(sz, @rbuf.length)
+ return out
+ end
+
+ def write(buf,sz=nil)
+ if !@write
+ return @transport.write(buf);
+ end
+
+ if (sz != nil && sz < buf.length)
+ buf = buf.slice(0,sz)
+ end
+
+ @wbuf << buf
+ end
+
+ #
+ # Writes the output buffer to the stream in the format of a 4-byte length
+ # followed by the actual data.
+ #
+ def flush
+ if !@write
+ return @transport.flush
+ end
+
+ out = [@wbuf.length].pack('N')
+ out << @wbuf
+ @transport.write(out)
+ @transport.flush
+ @wbuf = ''
+ end
+
+ private
+
+ def read_frame
+ buf = @transport.read_all(4)
+ val = buf.unpack('N')
+ sz = val[0]
+
+ @rbuf = @transport.read_all(sz)
+ end
+ end
+ deprecate_class! :TFramedTransport => FramedTransport
+
+ class FramedTransportFactory < TransportFactory
+ def get_transport(transport)
+ return FramedTransport.new(transport)
+ end
+ end
+ deprecate_class! :TFramedTransportFactory => FramedTransportFactory
+
+ class MemoryBuffer < Transport
+ def initialize(sz=1024)
+ @buf = ''
+ @sz = sz
+ @wpos = 0
+ @rpos = 0
+ end
+
+ def open?
+ return 1
+ end
+
+ def open
+ end
+
+ def close
+ end
+
+ def peek
+ return @rpos < @wpos
+ end
+
+ def get_buffer
+ return @buf
+ end
+
+ def reset_buffer(new_buf = '')
+ @buf = new_buf
+ @sz = new_buf.length
+ @wpos = new_buf.length
+ @rpos = 0
+ end
+
+ def available
+ return @wpos - @rpos
+ end
+
+ def read(len)
+ avail = available()
+
+ return '' if avail == 0
+
+ #how much to give
+ give = len
+ give = avail if avail < len
+
+ ret = @buf.slice(@rpos,give)
+
+ @rpos += give;
+
+ return ret;
+ end
+
+ def write(wbuf)
+ @buf << wbuf
+ @wpos += wbuf.length()
+ end
+
+ def flush
+ end
+ end
+ deprecate_class! :TMemoryBuffer => MemoryBuffer
+
+ ## Very very simple implementation of wrapping two objects, one with a #read
+ ## method and one with a #write method, into a transport for thrift.
+ ##
+ ## Assumes both objects are open, remain open, don't require flushing, etc.
+ class IOStreamTransport < Transport
+ def initialize(input, output)
+ @input = input
+ @output = output
+ end
+
+ def open?; true end
+ def read(sz); @input.read(sz) end
+ def write(buf); @output.write(buf) end
+ end
+ deprecate_class! :TIOStreamTransport => IOStreamTransport
+end
diff --git a/lib/rb/lib/thrift/transport/httpclient.rb b/lib/rb/lib/thrift/transport/httpclient.rb
new file mode 100644
index 0000000..2c4adfc
--- /dev/null
+++ b/lib/rb/lib/thrift/transport/httpclient.rb
@@ -0,0 +1,26 @@
+require 'thrift/transport'
+
+require 'net/http'
+require 'uri'
+require 'stringio'
+
+## Very simple HTTP client
+module Thrift
+ class HTTPClient < Transport
+ def initialize(url)
+ @url = URI url
+ @outbuf = ""
+ end
+
+ def open?; true end
+ def read(sz); @inbuf.read sz end
+ def write(buf); @outbuf << buf end
+ def flush
+ http = Net::HTTP.new @url.host, @url.port
+ resp, data = http.post(@url.path, @outbuf)
+ @inbuf = StringIO.new data
+ @outbuf = ""
+ end
+ end
+ deprecate_class! :THttpClient => HTTPClient
+end
diff --git a/lib/rb/lib/thrift/transport/socket.rb b/lib/rb/lib/thrift/transport/socket.rb
new file mode 100644
index 0000000..762b8d3
--- /dev/null
+++ b/lib/rb/lib/thrift/transport/socket.rb
@@ -0,0 +1,90 @@
+#!/usr/bin/env ruby
+#
+# Copyright (c) 2006- Facebook
+# Distributed under the Thrift Software License
+#
+# See accompanying file LICENSE or visit the Thrift site at:
+# http://developers.facebook.com/thrift/
+#
+# Author: Mark Slee <mcslee@facebook.com>
+#
+require 'thrift/transport'
+require 'socket'
+
+module Thrift
+ class Socket < Transport
+ def initialize(host='localhost', port=9090)
+ @host = host
+ @port = port
+ @handle = nil
+ end
+
+ def set_handle(handle)
+ @handle = handle
+ end
+
+ def open()
+ begin
+ @handle = TCPSocket.new(@host, @port)
+ rescue StandardError
+ raise TransportException.new(TransportException::NOT_OPEN, "Could not connect to #{@host}:#{@port}")
+ end
+ end
+
+ def open?()
+ return !@handle.nil?
+ end
+
+ def write(str)
+ begin
+ @handle.write(str)
+ rescue StandardError
+ raise TransportException.new(TransportException::NOT_OPEN)
+ end
+ end
+
+ def read(sz)
+ begin
+ data = @handle.recv(sz)
+ if (data.length == 0)
+ raise TransportException.new("TSocket: Could not read #{sz} bytes from #{@host}:#{@port}")
+ end
+ return data
+ rescue StandardError
+ raise TransportException.new(TransportException::NOT_OPEN)
+ end
+ end
+
+ def close()
+ @handle.close() unless @handle.nil?
+ @handle = nil
+ end
+ end
+ deprecate_class! :TSocket => Socket
+
+ class ServerSocket < ServerTransport
+ def initialize(port)
+ @port = port
+ @handle = nil
+ end
+
+ def listen()
+ @handle = TCPserver.new(nil, @port)
+ end
+
+ def accept()
+ if (@handle != nil)
+ sock = @handle.accept()
+ trans = Socket.new()
+ trans.set_handle(sock)
+ return trans
+ end
+ return nil
+ end
+
+ def close()
+ @handle.close() unless @handle.nil?
+ end
+ end
+ deprecate_class! :TServerSocket => ServerSocket
+end
diff --git a/lib/rb/lib/thrift/transport/thttpclient.rb b/lib/rb/lib/thrift/transport/thttpclient.rb
index 2fe3c57..ffca0ca 100644
--- a/lib/rb/lib/thrift/transport/thttpclient.rb
+++ b/lib/rb/lib/thrift/transport/thttpclient.rb
@@ -1,25 +1,2 @@
-#!/usr/bin/env ruby
-
-require 'thrift/transport/ttransport'
-
-require 'net/http'
-require 'uri'
-require 'stringio'
-
-## Very simple HTTP client
-class THttpClient < TTransport
- def initialize(url)
- @url = URI url
- @outbuf = ""
- end
-
- def open?; true end
- def read(sz); @inbuf.read sz end
- def write(buf); @outbuf << buf end
- def flush
- http = Net::HTTP.new @url.host, @url.port
- resp, data = http.post(@url.path, @outbuf)
- @inbuf = StringIO.new data
- @outbuf = ""
- end
-end
+require 'thrift/deprecation'
+require 'thrift/transport/httpclient'
diff --git a/lib/rb/lib/thrift/transport/tsocket.rb b/lib/rb/lib/thrift/transport/tsocket.rb
index e6ce9a9..fec6edf 100644
--- a/lib/rb/lib/thrift/transport/tsocket.rb
+++ b/lib/rb/lib/thrift/transport/tsocket.rb
@@ -1,88 +1,2 @@
-#!/usr/bin/env ruby
-#
-# Copyright (c) 2006- Facebook
-# Distributed under the Thrift Software License
-#
-# See accompanying file LICENSE or visit the Thrift site at:
-# http://developers.facebook.com/thrift/
-#
-# Author: Mark Slee <mcslee@facebook.com>
-#
-require 'thrift/transport/ttransport'
-require 'socket'
-
-class TSocket < TTransport
- def initialize(host='localhost', port=9090)
- @host = host
- @port = port
- @handle = nil
- end
-
- def set_handle(handle)
- @handle = handle
- end
-
- def open()
- begin
- @handle = TCPSocket.new(@host, @port)
- rescue StandardError
- raise TTransportException.new(TTransportException::NOT_OPEN, "Could not connect to #{@host}:#{@port}")
- end
- end
-
- def open?()
- return !@handle.nil?
- end
-
- def write(str)
- begin
- @handle.write(str)
- rescue StandardError
- raise TTransportException.new(TTransportException::NOT_OPEN)
- end
- end
-
- def read(sz)
- begin
- data = @handle.recv(sz)
- if (data.length == 0)
- raise TTransportException.new("TSocket: Could not read #{sz} bytes from #{@host}:#{@port}")
- end
- return data
- rescue StandardError
- raise TTransportException.new(TTransportException::NOT_OPEN)
- end
- end
-
- def close()
- @handle.close() unless @handle.nil?
- @handle = nil
- end
-
-end
-
-class TServerSocket < TServerTransport
- def initialize(port)
- @port = port
- @handle = nil
- end
-
- def listen()
- @handle = TCPserver.new(nil, @port)
- end
-
- def accept()
- if (@handle != nil)
- sock = @handle.accept()
- trans = TSocket.new()
- trans.set_handle(sock)
- return trans
- end
- return nil
- end
-
- def close()
- @handle.close() unless @handle.nil?
- end
-
-end
+require 'thrift/deprecation'
+require 'thrift/transport/socket'
diff --git a/lib/rb/lib/thrift/transport/ttransport.rb b/lib/rb/lib/thrift/transport/ttransport.rb
index 3d475b9..bae6088 100644
--- a/lib/rb/lib/thrift/transport/ttransport.rb
+++ b/lib/rb/lib/thrift/transport/ttransport.rb
@@ -1,289 +1,2 @@
-#!/usr/bin/env ruby
-#
-# Copyright (c) 2006- Facebook
-# Distributed under the Thrift Software License
-#
-# See accompanying file LICENSE or visit the Thrift site at:
-# http://developers.facebook.com/thrift/
-#
-# Author: Mark Slee <mcslee@facebook.com>
-#
-
-class TTransportException < Thrift::Exception
-
- UNKNOWN = 0
- NOT_OPEN = 1
- ALREADY_OPEN = 2
- TIMED_OUT = 3
- END_OF_FILE = 4
-
- attr_reader :type
-
- def initialize(type=UNKNOWN, message=nil)
- super(message)
- @type = type
- end
-
-end
-
-# TTransport is basically an abstract class, but isn't raising NotImplementedError
-# TODO: Think about if this is the right thing - Kevin Clark - 3/27/08
-class TTransport
- def open?; end
- deprecate! :isOpen => :open?
- deprecate! :is_open? => :open?
-
- def open; end
-
- def close; end
-
- def read(sz); end
-
- def read_all(size)
- buff = ''
- have = 0
-
- while (have < size)
- chunk = read(size - have)
- have += chunk.length
- buff << chunk
- end
-
- buff
- end
- deprecate! :readAll => :read_all
-
- def write(buf); end
-
- def flush; end
-end
-
-class TServerTransport
- def listen(); nil; end
-
- def accept(); nil; end
-
- def close(); nil; end
-
-end
-
-class TTransportFactory
- def get_transport(trans)
- return trans
- end
- deprecate! :getTransport => :get_transport
-end
-
-class TBufferedTransport < TTransport
- def initialize(transport)
- @transport = transport
- @wbuf = ''
- end
-
- def open?()
- return @transport.open?()
- end
-
- def open()
- @transport.open()
- end
-
- def close()
- @transport.close()
- end
-
- def read(sz)
- return @transport.read(sz)
- end
-
- def write(buf)
- @wbuf << buf
- end
-
- def flush()
- @transport.write(@wbuf)
- @transport.flush()
- @wbuf = ''
- end
-end
-
-class TBufferedTransportFactory < TTransportFactory
- def get_transport(transport)
- return TBufferedTransport.new(transport)
- end
-end
-
-
-class TFramedTransport < TTransport
- def initialize(transport, read=true, write=true)
- @transport = transport
- @rbuf = ''
- @wbuf = ''
- @read = read
- @write = write
- end
-
- def open?()
- return @transport.open?
- end
-
- def open()
- @transport.open
- end
-
- def close()
- @transport.close
- end
-
- def read(sz)
- if !@read
- return @transport.read(sz)
- end
-
- if (sz <= 0)
- return ''
- end
-
- if (@rbuf.length == 0)
- read_frame
- end
-
- # return full buf
- if (sz > @rbuf.length)
- out = @rbuf
- @rbuf = ''
- return out
- end
-
- # Return substr
- out = @rbuf.slice(0, sz)
- @rbuf = @rbuf.slice(sz, @rbuf.length)
- return out
-
- end
-
- def write(buf,sz=nil)
-
- if !@write
- return @transport.write(buf);
- end
-
- if (sz != nil && sz < buf.length)
- buf = buf.slice(0,sz)
- end
-
- @wbuf << buf
-
- end
-
- #
- # Writes the output buffer to the stream in the format of a 4-byte length
- # followed by the actual data.
- #
- def flush
- if !@write
- return @transport.flush
- end
-
- out = [@wbuf.length].pack('N')
- out << @wbuf
- @transport.write(out)
- @transport.flush
- @wbuf = ''
- end
-
- private
-
- def read_frame
- buf = @transport.read_all(4)
- val = buf.unpack('N')
- sz = val[0]
-
- @rbuf = @transport.read_all(sz)
- end
-
-end
-
-
-class TFramedTransportFactory < TTransportFactory
- def get_transport(transport)
- return TFramedTransport.new(transport)
- end
-end
-
-class TMemoryBuffer < TTransport
- def initialize(sz=1024)
- @buf = ''
- @sz = sz
- @wpos = 0
- @rpos = 0
- end
-
- def open?
- return 1
- end
-
- def open
- end
-
- def close
- end
-
- def peek
- return @rpos < @wpos
- end
-
- def get_buffer
- return @buf
- end
-
- def reset_buffer(new_buf = '')
- @buf = new_buf
- @sz = new_buf.length
- @wpos = new_buf.length
- @rpos = 0
- end
-
- def available
- return @wpos - @rpos
- end
-
- def read(len)
- avail = available()
-
- return '' if avail == 0
-
- #how much to give
- give = len
- give = avail if avail < len
-
- ret = @buf.slice(@rpos,give)
-
- @rpos += give;
-
- return ret;
- end
-
- def write(wbuf)
- @buf << wbuf
- @wpos += wbuf.length()
- end
-
- def flush
- end
-end
-
-## Very very simple implementation of wrapping two objects, one with a #read
-## method and one with a #write method, into a transport for thrift.
-##
-## Assumes both objects are open, remain open, don't require flushing, etc.
-class TIOStreamTransport < TTransport
- def initialize(input, output)
- @input = input
- @output = output
- end
-
- def open?; true end
- def read(sz); @input.read(sz) end
- def write(buf); @output.write(buf) end
-end
+require 'thrift/deprecation'
+require 'thrift/transport'
diff --git a/lib/rb/lib/thrift/types.rb b/lib/rb/lib/thrift/types.rb
index b1fbb87..2831748 100644
--- a/lib/rb/lib/thrift/types.rb
+++ b/lib/rb/lib/thrift/types.rb
@@ -22,4 +22,4 @@
EXCEPTION = 3
end
deprecate_class! :TMessageType => MessageTypes
-end
\ No newline at end of file
+end