Implement NonblockingServer and add specs


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@668999 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/rb/spec/gen-rb/NonblockingService.rb b/lib/rb/spec/gen-rb/NonblockingService.rb
new file mode 100644
index 0000000..46e7c60
--- /dev/null
+++ b/lib/rb/spec/gen-rb/NonblockingService.rb
@@ -0,0 +1,192 @@
+#
+# Autogenerated by Thrift
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+
+require 'thrift/protocol'
+require 'thrift'
+require 'ThriftSpec_types'
+
+    module SpecNamespace
+      module NonblockingService
+        class Client
+          include Thrift::Client
+
+          def greeting(english)
+            send_greeting(english)
+            return recv_greeting()
+          end
+
+          def send_greeting(english)
+            send_message('greeting', Greeting_args, :english => english)
+          end
+
+          def recv_greeting()
+            result = receive_message(Greeting_result)
+            return result.success unless result.success.nil?
+            raise Thrift::ApplicationException.new(Thrift::ApplicationException::MISSING_RESULT, 'greeting failed: unknown result')
+          end
+
+          def block()
+            send_block()
+            return recv_block()
+          end
+
+          def send_block()
+            send_message('block', Block_args)
+          end
+
+          def recv_block()
+            result = receive_message(Block_result)
+            return result.success unless result.success.nil?
+            raise Thrift::ApplicationException.new(Thrift::ApplicationException::MISSING_RESULT, 'block failed: unknown result')
+          end
+
+          def unblock()
+            send_unblock()
+          end
+
+          def send_unblock()
+            send_message('unblock', Unblock_args)
+          end
+          def shutdown()
+            send_shutdown()
+          end
+
+          def send_shutdown()
+            send_message('shutdown', Shutdown_args)
+          end
+          def sleep(seconds)
+            send_sleep(seconds)
+            recv_sleep()
+          end
+
+          def send_sleep(seconds)
+            send_message('sleep', Sleep_args, :seconds => seconds)
+          end
+
+          def recv_sleep()
+            result = receive_message(Sleep_result)
+            return
+          end
+
+        end
+
+        class Processor
+          include Thrift::Processor
+
+          def process_greeting(seqid, iprot, oprot)
+            args = read_args(iprot, Greeting_args)
+            result = Greeting_result.new()
+            result.success = @handler.greeting(args.english)
+            write_result(result, oprot, 'greeting', seqid)
+          end
+
+          def process_block(seqid, iprot, oprot)
+            args = read_args(iprot, Block_args)
+            result = Block_result.new()
+            result.success = @handler.block()
+            write_result(result, oprot, 'block', seqid)
+          end
+
+          def process_unblock(seqid, iprot, oprot)
+            args = read_args(iprot, Unblock_args)
+            @handler.unblock()
+            return
+          end
+
+          def process_shutdown(seqid, iprot, oprot)
+            args = read_args(iprot, Shutdown_args)
+            @handler.shutdown()
+            return
+          end
+
+          def process_sleep(seqid, iprot, oprot)
+            args = read_args(iprot, Sleep_args)
+            result = Sleep_result.new()
+            @handler.sleep(args.seconds)
+            write_result(result, oprot, 'sleep', seqid)
+          end
+
+        end
+
+        # HELPER FUNCTIONS AND STRUCTURES
+
+        class Greeting_args
+          include Thrift::Struct
+          attr_accessor :english
+          FIELDS = {
+            1 => {:type => Thrift::Types::BOOL, :name => 'english'}
+          }
+        end
+
+        class Greeting_result
+          include Thrift::Struct
+          attr_accessor :success
+          FIELDS = {
+            0 => {:type => Thrift::Types::STRUCT, :name => 'success', :class => Hello}
+          }
+        end
+
+        class Block_args
+          include Thrift::Struct
+          FIELDS = {
+
+          }
+        end
+
+        class Block_result
+          include Thrift::Struct
+          attr_accessor :success
+          FIELDS = {
+            0 => {:type => Thrift::Types::BOOL, :name => 'success'}
+          }
+        end
+
+        class Unblock_args
+          include Thrift::Struct
+          FIELDS = {
+
+          }
+        end
+
+        class Unblock_result
+          include Thrift::Struct
+          FIELDS = {
+
+          }
+        end
+
+        class Shutdown_args
+          include Thrift::Struct
+          FIELDS = {
+
+          }
+        end
+
+        class Shutdown_result
+          include Thrift::Struct
+          FIELDS = {
+
+          }
+        end
+
+        class Sleep_args
+          include Thrift::Struct
+          attr_accessor :seconds
+          FIELDS = {
+            1 => {:type => Thrift::Types::DOUBLE, :name => 'seconds'}
+          }
+        end
+
+        class Sleep_result
+          include Thrift::Struct
+          FIELDS = {
+
+          }
+        end
+
+      end
+
+    end