protobuf 2.5.0 → 2.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +4 -0
- data/lib/protobuf.rb +13 -0
- data/lib/protobuf/rpc/connectors/base.rb +6 -5
- data/lib/protobuf/rpc/connectors/common.rb +15 -11
- data/lib/protobuf/rpc/connectors/em_client.rb +1 -1
- data/lib/protobuf/rpc/rpc.pb.rb +27 -92
- data/lib/protobuf/rpc/server.rb +2 -4
- data/lib/protobuf/rpc/servers/evented/server.rb +0 -4
- data/lib/protobuf/rpc/servers/socket/server.rb +1 -1
- data/lib/protobuf/rpc/servers/socket/worker.rb +0 -4
- data/lib/protobuf/rpc/servers/zmq/worker.rb +1 -1
- data/lib/protobuf/rpc/service.rb +32 -11
- data/lib/protobuf/rpc/service_dispatcher.rb +1 -1
- data/lib/protobuf/rpc/stat.rb +4 -4
- data/lib/protobuf/version.rb +1 -1
- data/proto/rpc.proto +27 -38
- data/spec/lib/protobuf/rpc/connectors/common_spec.rb +48 -12
- data/spec/lib/protobuf_spec.rb +16 -0
- metadata +111 -98
- data/proto/rpc.pb.rb +0 -48
    
        data/README.md
    CHANGED
    
    | @@ -14,6 +14,8 @@ So let's dive in and see how to work with all three. | |
| 14 14 |  | 
| 15 15 | 
             
            ## 1. Generating ruby classes from `.proto` files
         | 
| 16 16 |  | 
| 17 | 
            +
            _The `protobuf` package is required for compilation. Mac: `brew install protobuf`, Ubuntu: `sudo apt-get install -y protobuf`_
         | 
| 18 | 
            +
             | 
| 17 19 | 
             
            Protocol Buffers are great because they allow you to clearly define data storage or data transfer packets. Google officially supports Java, C++, and Python for compilation and usage. Let's make it ruby aware!
         | 
| 18 20 |  | 
| 19 21 | 
             
            Let's say you have a `defs.proto` file that defines a User message.
         | 
| @@ -24,9 +26,11 @@ message User { | |
| 24 26 | 
             
              required string first_name = 1;
         | 
| 25 27 | 
             
              required string last_name = 2;
         | 
| 26 28 | 
             
            }
         | 
| 29 | 
            +
            ```
         | 
| 27 30 |  | 
| 28 31 | 
             
            Now let's compile that definition to ruby:
         | 
| 29 32 |  | 
| 33 | 
            +
            ```
         | 
| 30 34 | 
             
            $ rprotoc defs.proto --ruby_out ./lib
         | 
| 31 35 | 
             
            ```
         | 
| 32 36 |  | 
    
        data/lib/protobuf.rb
    CHANGED
    
    | @@ -14,6 +14,19 @@ module Protobuf | |
| 14 14 |  | 
| 15 15 | 
             
            	module_function
         | 
| 16 16 |  | 
| 17 | 
            +
              # Client Host
         | 
| 18 | 
            +
              #
         | 
| 19 | 
            +
              # Default: `hostname` of the system
         | 
| 20 | 
            +
              #
         | 
| 21 | 
            +
              # The name or address of the host to use during client RPC calls.
         | 
| 22 | 
            +
              def self.client_host
         | 
| 23 | 
            +
                @_client_host ||= `hostname`.chomp
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              def self.client_host=(host)
         | 
| 27 | 
            +
                @_client_host = host
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
             | 
| 17 30 | 
             
              # Connector Type
         | 
| 18 31 | 
             
              #
         | 
| 19 32 | 
             
              # Default: socket
         | 
| @@ -9,14 +9,15 @@ module Protobuf | |
| 9 9 | 
             
              module Rpc
         | 
| 10 10 | 
             
                module Connectors
         | 
| 11 11 | 
             
                  DEFAULT_OPTIONS = {
         | 
| 12 | 
            -
                    :service        => nil,           # Service  | 
| 13 | 
            -
                    :method         => nil,           # Service method to  | 
| 14 | 
            -
                    :host           => '127.0.0.1',   #  | 
| 15 | 
            -
                    :port           => '9399',        #  | 
| 12 | 
            +
                    :service        => nil,           # Fully-qualified Service class
         | 
| 13 | 
            +
                    :method         => nil,           # Service method to invoke
         | 
| 14 | 
            +
                    :host           => '127.0.0.1',   # The hostname or address of the service (usually overridden or pre-configured)
         | 
| 15 | 
            +
                    :port           => '9399',        # The port of the service (usually overridden or pre-configured)
         | 
| 16 16 | 
             
                    :request        => nil,           # The request object sent by the client
         | 
| 17 17 | 
             
                    :request_type   => nil,           # The request type expected by the client
         | 
| 18 18 | 
             
                    :response_type  => nil,           # The response type expected by the client
         | 
| 19 | 
            -
                    :timeout        => 30 | 
| 19 | 
            +
                    :timeout        => 30,            # The default timeout for the request, also handled by client.rb
         | 
| 20 | 
            +
                    :client_host    => nil            # The hostname or address of this client
         | 
| 20 21 | 
             
                  }
         | 
| 21 22 |  | 
| 22 23 | 
             
                  class Base
         | 
| @@ -11,6 +11,10 @@ module Protobuf | |
| 11 11 | 
             
                      end
         | 
| 12 12 | 
             
                    end
         | 
| 13 13 |  | 
| 14 | 
            +
                    def request_caller
         | 
| 15 | 
            +
                      @options[:client_host] || ::Protobuf.client_host
         | 
| 16 | 
            +
                    end
         | 
| 17 | 
            +
             | 
| 14 18 | 
             
                    def complete
         | 
| 15 19 | 
             
                      @stats.stop
         | 
| 16 20 | 
             
                      log_info { @stats.to_s }
         | 
| @@ -101,21 +105,21 @@ module Protobuf | |
| 101 105 | 
             
                      fail(:RPC_ERROR, "Connection error: #{e.message}")
         | 
| 102 106 | 
             
                    end
         | 
| 103 107 |  | 
| 104 | 
            -
                    def  | 
| 105 | 
            -
                      validate_request_type
         | 
| 108 | 
            +
                    def request_bytes
         | 
| 109 | 
            +
                      validate_request_type!
         | 
| 110 | 
            +
                      fields = { :service_name => @options[:service].name,
         | 
| 111 | 
            +
                                 :method_name => @options[:method].to_s,
         | 
| 112 | 
            +
                                 :request_proto => @options[:request],
         | 
| 113 | 
            +
                                 :caller => request_caller }
         | 
| 106 114 |  | 
| 107 | 
            -
                      return ::Protobuf::Socketrpc::Request.new(
         | 
| 108 | 
            -
                        :service_name => @options[:service].name,
         | 
| 109 | 
            -
                        :method_name => @options[:method].to_s,
         | 
| 110 | 
            -
                        :request_proto => @options[:request]
         | 
| 111 | 
            -
                      ).serialize_to_string
         | 
| 115 | 
            +
                      return ::Protobuf::Socketrpc::Request.new(fields).serialize_to_string
         | 
| 112 116 | 
             
                    rescue => e
         | 
| 113 117 | 
             
                      fail(:INVALID_REQUEST_PROTO, "Could not set request proto: #{e.message}")
         | 
| 114 118 | 
             
                    end
         | 
| 115 119 |  | 
| 116 120 | 
             
                    def setup_connection
         | 
| 117 121 | 
             
                      initialize_stats
         | 
| 118 | 
            -
                      @request_data =  | 
| 122 | 
            +
                      @request_data = request_bytes
         | 
| 119 123 | 
             
                    end
         | 
| 120 124 |  | 
| 121 125 | 
             
                    def succeed(response)
         | 
| @@ -129,7 +133,7 @@ module Protobuf | |
| 129 133 | 
             
                      complete
         | 
| 130 134 | 
             
                    end
         | 
| 131 135 |  | 
| 132 | 
            -
                    def validate_request_type
         | 
| 136 | 
            +
                    def validate_request_type!
         | 
| 133 137 | 
             
                      unless @options[:request].class == @options[:request_type]
         | 
| 134 138 | 
             
                        expected = @options[:request_type].name
         | 
| 135 139 | 
             
                        actual = @options[:request].class.name
         | 
| @@ -138,13 +142,13 @@ module Protobuf | |
| 138 142 | 
             
                    end
         | 
| 139 143 |  | 
| 140 144 | 
             
                    def verify_callbacks
         | 
| 141 | 
            -
                       | 
| 145 | 
            +
                      unless any_callbacks?
         | 
| 142 146 | 
             
                        log_debug { sign_message("No callbacks set, using data_callback") }
         | 
| 143 147 | 
             
                        @success_cb = @failure_cb = self.method(:data_callback)
         | 
| 144 148 | 
             
                      end
         | 
| 145 149 | 
             
                    end
         | 
| 146 150 |  | 
| 147 | 
            -
                    def verify_options
         | 
| 151 | 
            +
                    def verify_options!
         | 
| 148 152 | 
             
                      # Verify the options that are necessary and merge them in
         | 
| 149 153 | 
             
                      [:service, :method, :host, :port].each do |opt|
         | 
| 150 154 | 
             
                        fail(:RPC_ERROR, "Invalid client connection configuration. #{opt} must be a defined option.") if @options[opt].nil?
         | 
| @@ -17,7 +17,7 @@ module Protobuf | |
| 17 17 | 
             
                      @failure_cb = failure_cb
         | 
| 18 18 | 
             
                      @options = DEFAULT_OPTIONS.merge(options)
         | 
| 19 19 | 
             
                      @response_buffer = ::Protobuf::Rpc::Buffer.new(:read)
         | 
| 20 | 
            -
                      verify_options
         | 
| 20 | 
            +
                      verify_options!
         | 
| 21 21 |  | 
| 22 22 | 
             
                      log_debug { sign_message("Client Initialized: #{options.inspect}") }
         | 
| 23 23 | 
             
                    rescue => e
         | 
    
        data/lib/protobuf/rpc/rpc.pb.rb
    CHANGED
    
    | @@ -1,78 +1,6 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 3 | 
            -
            # | 
| 4 | 
            -
            # //
         | 
| 5 | 
            -
            # // Permission is hereby granted, free of charge, to any person obtaining a copy
         | 
| 6 | 
            -
            # // of this software and associated documentation files (the "Software"), to deal
         | 
| 7 | 
            -
            # // in the Software without restriction, including without limitation the rights
         | 
| 8 | 
            -
            # // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
         | 
| 9 | 
            -
            # // copies of the Software, and to permit persons to whom the Software is
         | 
| 10 | 
            -
            # // furnished to do so, subject to the following conditions:
         | 
| 11 | 
            -
            # //
         | 
| 12 | 
            -
            # // The above copyright notice and this permission notice shall be included in
         | 
| 13 | 
            -
            # // all copies or substantial portions of the Software.
         | 
| 14 | 
            -
            # //
         | 
| 15 | 
            -
            # // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
         | 
| 16 | 
            -
            # // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
         | 
| 17 | 
            -
            # // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
         | 
| 18 | 
            -
            # // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
         | 
| 19 | 
            -
            # // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
         | 
| 20 | 
            -
            # // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
         | 
| 21 | 
            -
            # // THE SOFTWARE.
         | 
| 22 | 
            -
            # 
         | 
| 23 | 
            -
            # // Author: Shardul Deo
         | 
| 24 | 
            -
            # //
         | 
| 25 | 
            -
            # // Protobufs needed for socket rpcs.
         | 
| 26 | 
            -
            # 
         | 
| 27 | 
            -
            # package protobuf.socketrpc;
         | 
| 28 | 
            -
            # 
         | 
| 29 | 
            -
            # message Request {
         | 
| 30 | 
            -
            # 
         | 
| 31 | 
            -
            #   // RPC service full name
         | 
| 32 | 
            -
            #   required string service_name = 1;
         | 
| 33 | 
            -
            #   
         | 
| 34 | 
            -
            #   // RPC method name
         | 
| 35 | 
            -
            #   required string method_name = 2;
         | 
| 36 | 
            -
            #   
         | 
| 37 | 
            -
            #   // RPC request proto
         | 
| 38 | 
            -
            #   required bytes request_proto = 3;
         | 
| 39 | 
            -
            # }
         | 
| 40 | 
            -
            # 
         | 
| 41 | 
            -
            # message Response {
         | 
| 42 | 
            -
            # 
         | 
| 43 | 
            -
            #   // RPC response proto
         | 
| 44 | 
            -
            #   optional bytes response_proto = 1;
         | 
| 45 | 
            -
            #   
         | 
| 46 | 
            -
            #   // Error, if any
         | 
| 47 | 
            -
            #   optional string error = 2;
         | 
| 48 | 
            -
            #   
         | 
| 49 | 
            -
            #   // Was callback invoked
         | 
| 50 | 
            -
            #   optional bool callback = 3 [default = false];
         | 
| 51 | 
            -
            #   
         | 
| 52 | 
            -
            #   // Error Reason
         | 
| 53 | 
            -
            #   optional ErrorReason error_reason = 4;
         | 
| 54 | 
            -
            # }
         | 
| 55 | 
            -
            # 
         | 
| 56 | 
            -
            # // Possible error reasons
         | 
| 57 | 
            -
            # // The server-side errors are returned in the response from the server.
         | 
| 58 | 
            -
            # // The client-side errors are returned by the client-side code when it doesn't 
         | 
| 59 | 
            -
            # // have a response from the server.
         | 
| 60 | 
            -
            # enum ErrorReason {
         | 
| 61 | 
            -
            # 
         | 
| 62 | 
            -
            #   // Server-side errors
         | 
| 63 | 
            -
            #   BAD_REQUEST_DATA = 0; // Server received bad request data
         | 
| 64 | 
            -
            #   BAD_REQUEST_PROTO = 1; // Server received bad request proto
         | 
| 65 | 
            -
            #   SERVICE_NOT_FOUND = 2; // Service not found on server
         | 
| 66 | 
            -
            #   METHOD_NOT_FOUND = 3; // Method not found on server
         | 
| 67 | 
            -
            #   RPC_ERROR = 4; // Rpc threw exception on server
         | 
| 68 | 
            -
            #   RPC_FAILED = 5; // Rpc failed on server
         | 
| 69 | 
            -
            #   
         | 
| 70 | 
            -
            #   // Client-side errors (these are returned by the client-side code)
         | 
| 71 | 
            -
            #   INVALID_REQUEST_PROTO = 6; // Rpc was called with invalid request proto
         | 
| 72 | 
            -
            #   BAD_RESPONSE_PROTO = 7; // Server returned a bad response proto
         | 
| 73 | 
            -
            #   UNKNOWN_HOST = 8; // Could not find supplied host
         | 
| 74 | 
            -
            #   IO_ERROR = 9; // I/O error while communicating with server
         | 
| 75 | 
            -
            # }
         | 
| 1 | 
            +
            ##
         | 
| 2 | 
            +
            # This file is auto-generated. DO NOT EDIT!
         | 
| 3 | 
            +
            #
         | 
| 76 4 | 
             
            require 'protobuf/message'
         | 
| 77 5 |  | 
| 78 6 | 
             
            module Protobuf
         | 
| @@ -91,28 +19,35 @@ module Protobuf | |
| 91 19 | 
             
                ##
         | 
| 92 20 | 
             
                # Enum Values
         | 
| 93 21 | 
             
                #
         | 
| 94 | 
            -
                 | 
| 95 | 
            -
             | 
| 96 | 
            -
             | 
| 97 | 
            -
             | 
| 98 | 
            -
             | 
| 99 | 
            -
             | 
| 100 | 
            -
             | 
| 101 | 
            -
             | 
| 102 | 
            -
             | 
| 103 | 
            -
             | 
| 22 | 
            +
                class ErrorReason
         | 
| 23 | 
            +
                  define :BAD_REQUEST_DATA, 0
         | 
| 24 | 
            +
                  define :BAD_REQUEST_PROTO, 1
         | 
| 25 | 
            +
                  define :SERVICE_NOT_FOUND, 2
         | 
| 26 | 
            +
                  define :METHOD_NOT_FOUND, 3
         | 
| 27 | 
            +
                  define :RPC_ERROR, 4
         | 
| 28 | 
            +
                  define :RPC_FAILED, 5
         | 
| 29 | 
            +
                  define :INVALID_REQUEST_PROTO, 6
         | 
| 30 | 
            +
                  define :BAD_RESPONSE_PROTO, 7
         | 
| 31 | 
            +
                  define :UNKNOWN_HOST, 8
         | 
| 32 | 
            +
                  define :IO_ERROR, 9
         | 
| 33 | 
            +
                end
         | 
| 104 34 |  | 
| 105 35 | 
             
                ##
         | 
| 106 36 | 
             
                # Message Fields
         | 
| 107 37 | 
             
                #
         | 
| 108 | 
            -
                 | 
| 109 | 
            -
             | 
| 110 | 
            -
             | 
| 38 | 
            +
                class Request
         | 
| 39 | 
            +
                  required ::Protobuf::Field::StringField, :service_name, 1
         | 
| 40 | 
            +
                  required ::Protobuf::Field::StringField, :method_name, 2
         | 
| 41 | 
            +
                  optional ::Protobuf::Field::BytesField, :request_proto, 3
         | 
| 42 | 
            +
                  optional ::Protobuf::Field::StringField, :caller, 4
         | 
| 43 | 
            +
                end
         | 
| 111 44 |  | 
| 112 | 
            -
                 | 
| 113 | 
            -
             | 
| 114 | 
            -
             | 
| 115 | 
            -
             | 
| 45 | 
            +
                class Response
         | 
| 46 | 
            +
                  optional ::Protobuf::Field::BytesField, :response_proto, 1
         | 
| 47 | 
            +
                  optional ::Protobuf::Field::StringField, :error, 2
         | 
| 48 | 
            +
                  optional ::Protobuf::Field::BoolField, :callback, 3, :default => false
         | 
| 49 | 
            +
                  optional ::Protobuf::Socketrpc::ErrorReason, :error_reason, 4
         | 
| 50 | 
            +
                end
         | 
| 116 51 |  | 
| 117 52 | 
             
              end
         | 
| 118 53 | 
             
            end
         | 
    
        data/lib/protobuf/rpc/server.rb
    CHANGED
    
    | @@ -14,7 +14,6 @@ module Protobuf | |
| 14 14 | 
             
                    @request = ::Protobuf::Socketrpc::Request.new
         | 
| 15 15 | 
             
                    @response = ::Protobuf::Socketrpc::Response.new
         | 
| 16 16 | 
             
                    @stats = Protobuf::Rpc::Stat.new(:SERVER)
         | 
| 17 | 
            -
                    set_peer
         | 
| 18 17 | 
             
                  end
         | 
| 19 18 |  | 
| 20 19 | 
             
                  def disable_gc!
         | 
| @@ -25,12 +24,11 @@ module Protobuf | |
| 25 24 | 
             
                    ::GC.enable && ::GC.start if ::Protobuf.gc_pause_server_request?
         | 
| 26 25 | 
             
                  end
         | 
| 27 26 |  | 
| 28 | 
            -
                  # no-op, implemented by including class if desired.
         | 
| 29 | 
            -
                  def set_peer; end
         | 
| 30 | 
            -
             | 
| 31 27 | 
             
                  # Invoke the service method dictated by the proto wrapper request object
         | 
| 32 28 | 
             
                  def handle_client
         | 
| 33 29 | 
             
                    parse_request_from_buffer
         | 
| 30 | 
            +
                    @stats.client = @request.caller
         | 
| 31 | 
            +
             | 
| 34 32 | 
             
                    @dispatcher = ::Protobuf::Rpc::ServiceDispatcher.new(@request)
         | 
| 35 33 | 
             
                    @stats.dispatcher = @dispatcher
         | 
| 36 34 |  | 
| @@ -74,7 +74,7 @@ module Protobuf | |
| 74 74 | 
             
                              client, sockaddr = @server.accept
         | 
| 75 75 | 
             
                              @listen_fds << client
         | 
| 76 76 | 
             
                            else
         | 
| 77 | 
            -
                               | 
| 77 | 
            +
                              unless @working.include?(client)
         | 
| 78 78 | 
             
                                @working << @listen_fds.delete(client)
         | 
| 79 79 | 
             
                                log_debug { sign_message("Working")  }
         | 
| 80 80 | 
             
                                @threads << { :thread => new_worker(client), :socket => client }
         | 
| @@ -29,7 +29,7 @@ module Protobuf | |
| 29 29 | 
             
                    def handle_request(socket)
         | 
| 30 30 | 
             
                      @request_data = ''
         | 
| 31 31 | 
             
                      zmq_error_check(socket.recv_string(@request_data))
         | 
| 32 | 
            -
                      log_debug { sign_message("handling request") }  | 
| 32 | 
            +
                      log_debug { sign_message("handling request") } unless @request_data.nil?
         | 
| 33 33 | 
             
                    end
         | 
| 34 34 |  | 
| 35 35 | 
             
                    def run
         | 
    
        data/lib/protobuf/rpc/service.rb
    CHANGED
    
    | @@ -15,8 +15,6 @@ module Protobuf | |
| 15 15 | 
             
                  include ::Protobuf::Logger::LogMethods
         | 
| 16 16 |  | 
| 17 17 |  | 
| 18 | 
            -
                  attr_reader :response, :rpc
         | 
| 19 | 
            -
             | 
| 20 18 | 
             
                  DEFAULT_HOST = '127.0.0.1'.freeze
         | 
| 21 19 | 
             
                  DEFAULT_PORT = 9399
         | 
| 22 20 |  | 
| @@ -102,23 +100,26 @@ module Protobuf | |
| 102 100 | 
             
                  # Instance Methods
         | 
| 103 101 | 
             
                  #
         | 
| 104 102 |  | 
| 103 | 
            +
                  attr_reader :response, :method_name, :client_host
         | 
| 104 | 
            +
             | 
| 105 105 | 
             
                  # Initialize a service with the rpc endpoint name and the bytes
         | 
| 106 106 | 
             
                  # for the request.
         | 
| 107 | 
            -
                  def initialize( | 
| 108 | 
            -
                    @ | 
| 109 | 
            -
                    @ | 
| 107 | 
            +
                  def initialize(method_name, request_bytes, client_host = nil)
         | 
| 108 | 
            +
                    @method_name = method_name
         | 
| 109 | 
            +
                    @client_host = client_host
         | 
| 110 | 
            +
                    @_request_bytes = request_bytes
         | 
| 110 111 | 
             
                  end
         | 
| 111 112 |  | 
| 112 113 | 
             
                  # Register a failure callback for use when rpc_failed is invoked.
         | 
| 113 114 | 
             
                  #
         | 
| 114 115 | 
             
                  def on_rpc_failed(callable)
         | 
| 115 | 
            -
                    @ | 
| 116 | 
            +
                    @_rpc_failed_callback ||= callable
         | 
| 116 117 | 
             
                  end
         | 
| 117 118 |  | 
| 118 119 | 
             
                  # Response object for this rpc cycle. Not assignable.
         | 
| 119 120 | 
             
                  #
         | 
| 120 121 | 
             
                  def response
         | 
| 121 | 
            -
                    @_response ||=  | 
| 122 | 
            +
                    @_response ||= response_type.new
         | 
| 122 123 | 
             
                  end
         | 
| 123 124 |  | 
| 124 125 | 
             
                  # Convenience method to get back to class method.
         | 
| @@ -144,18 +145,26 @@ module Protobuf | |
| 144 145 |  | 
| 145 146 | 
             
                  private
         | 
| 146 147 |  | 
| 148 | 
            +
                  def response_type
         | 
| 149 | 
            +
                    @_response_type ||= rpcs[@method_name].response_type
         | 
| 150 | 
            +
                  end
         | 
| 151 | 
            +
             | 
| 147 152 | 
             
                  # Request object for this rpc cycle. Not assignable.
         | 
| 148 153 | 
             
                  #
         | 
| 149 154 | 
             
                  def request
         | 
| 150 | 
            -
                    @_request ||= if @ | 
| 151 | 
            -
                         | 
| 155 | 
            +
                    @_request ||= if @_request_bytes.present?
         | 
| 156 | 
            +
                        request_type.new.parse_from_string(@_request_bytes)
         | 
| 152 157 | 
             
                      else
         | 
| 153 | 
            -
                         | 
| 158 | 
            +
                        request_type.new
         | 
| 154 159 | 
             
                      end
         | 
| 155 160 | 
             
                  rescue => e
         | 
| 156 161 | 
             
                    raise BadRequestProto, "Unable to parse request: #{e.message}"
         | 
| 157 162 | 
             
                  end
         | 
| 158 163 |  | 
| 164 | 
            +
                  def request_type
         | 
| 165 | 
            +
                    @_request_type ||= rpcs[@method_name].request_type
         | 
| 166 | 
            +
                  end
         | 
| 167 | 
            +
             | 
| 159 168 | 
             
                  # Sugar to make an rpc method feel like a controller method.
         | 
| 160 169 | 
             
                  # If this method is not called, the response will be the memoized
         | 
| 161 170 | 
             
                  # object returned by the response reader.
         | 
| @@ -165,10 +174,22 @@ module Protobuf | |
| 165 174 | 
             
                  end
         | 
| 166 175 | 
             
                  alias_method :return_from_whence_you_came, :respond_with
         | 
| 167 176 |  | 
| 177 | 
            +
                  # Renamed attribute from prior implementaiton due to lack of clarity
         | 
| 178 | 
            +
                  # in what the variable contained. DEPRECATED.
         | 
| 179 | 
            +
                  def rpc
         | 
| 180 | 
            +
                    if ::Protobuf.print_deprecation_warnings?
         | 
| 181 | 
            +
                      $stderr.puts <<-ERROR
         | 
| 182 | 
            +
                        [WARNING] Service#rpc method has been deprecated
         | 
| 183 | 
            +
                                  and will be removed in a future version of protobuf.
         | 
| 184 | 
            +
                      ERROR
         | 
| 185 | 
            +
                    end
         | 
| 186 | 
            +
                    @method_name
         | 
| 187 | 
            +
                  end
         | 
| 188 | 
            +
             | 
| 168 189 | 
             
                  # Automatically fail a service method.
         | 
| 169 190 | 
             
                  #
         | 
| 170 191 | 
             
                  def rpc_failed(message)
         | 
| 171 | 
            -
                    @ | 
| 192 | 
            +
                    @_rpc_failed_callback.call(message)
         | 
| 172 193 | 
             
                  end
         | 
| 173 194 |  | 
| 174 195 | 
             
                end
         | 
| @@ -74,7 +74,7 @@ module Protobuf | |
| 74 74 | 
             
                    request_proto = outer_request.has_field?(:request_proto) ? outer_request.request_proto : nil
         | 
| 75 75 |  | 
| 76 76 | 
             
                    if service_klass.rpc_method?(method_name)
         | 
| 77 | 
            -
                      self.service = service_klass.new(method_name, request_proto)
         | 
| 77 | 
            +
                      self.service = service_klass.new(method_name, request_proto, outer_request.caller)
         | 
| 78 78 | 
             
                      self.callable_method = service.callable_rpc_method(method_name)
         | 
| 79 79 | 
             
                      self.definition = service.rpcs[method_name]
         | 
| 80 80 | 
             
                    else
         | 
    
        data/lib/protobuf/rpc/stat.rb
    CHANGED
    
    | @@ -14,12 +14,12 @@ module Protobuf | |
| 14 14 | 
             
                    start
         | 
| 15 15 | 
             
                  end
         | 
| 16 16 |  | 
| 17 | 
            -
                  def client=( | 
| 18 | 
            -
                    @client =  | 
| 17 | 
            +
                  def client=(client_host)
         | 
| 18 | 
            +
                    @client = client_host
         | 
| 19 19 | 
             
                  end
         | 
| 20 20 |  | 
| 21 21 | 
             
                  def client
         | 
| 22 | 
            -
                    @client  | 
| 22 | 
            +
                    @client || nil
         | 
| 23 23 | 
             
                  end
         | 
| 24 24 |  | 
| 25 25 | 
             
                  def method_name
         | 
| @@ -47,7 +47,7 @@ module Protobuf | |
| 47 47 | 
             
                  end
         | 
| 48 48 |  | 
| 49 49 | 
             
                  def stop
         | 
| 50 | 
            -
                    start  | 
| 50 | 
            +
                    start unless @start_time
         | 
| 51 51 | 
             
                    @end_time ||= Time.now
         | 
| 52 52 | 
             
                  end
         | 
| 53 53 |  | 
    
        data/lib/protobuf/version.rb
    CHANGED
    
    
    
        data/proto/rpc.proto
    CHANGED
    
    | @@ -18,56 +18,45 @@ | |
| 18 18 | 
             
            // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
         | 
| 19 19 | 
             
            // THE SOFTWARE.
         | 
| 20 20 |  | 
| 21 | 
            -
            //  | 
| 21 | 
            +
            // Authors: Shardul Deo, BJ Neilsen
         | 
| 22 22 | 
             
            //
         | 
| 23 23 | 
             
            // Protobufs needed for socket rpcs.
         | 
| 24 24 |  | 
| 25 25 | 
             
            package protobuf.socketrpc;
         | 
| 26 26 |  | 
| 27 | 
            -
            message Request | 
| 28 | 
            -
             | 
| 29 | 
            -
              //  | 
| 30 | 
            -
              required string  | 
| 31 | 
            -
              
         | 
| 32 | 
            -
              //  | 
| 33 | 
            -
              required string method_name = 2;
         | 
| 34 | 
            -
              
         | 
| 35 | 
            -
              // RPC request proto
         | 
| 36 | 
            -
              optional bytes request_proto = 3;
         | 
| 27 | 
            +
            message Request
         | 
| 28 | 
            +
            {
         | 
| 29 | 
            +
              required string service_name = 1;             // Fully- qualified Service class name
         | 
| 30 | 
            +
              required string method_name = 2;              // Service method to invoke
         | 
| 31 | 
            +
              optional bytes request_proto = 3;             // Serialized request bytes
         | 
| 32 | 
            +
              optional string caller = 4;                   // Calling hostname or address
         | 
| 37 33 | 
             
            }
         | 
| 38 34 |  | 
| 39 | 
            -
            message Response | 
| 40 | 
            -
             | 
| 41 | 
            -
              //  | 
| 42 | 
            -
              optional  | 
| 43 | 
            -
              
         | 
| 44 | 
            -
              // Error | 
| 45 | 
            -
              optional string error = 2;
         | 
| 46 | 
            -
              
         | 
| 47 | 
            -
              // Was callback invoked
         | 
| 48 | 
            -
              optional bool callback = 3 [default = false];
         | 
| 49 | 
            -
              
         | 
| 50 | 
            -
              // Error Reason
         | 
| 51 | 
            -
              optional ErrorReason error_reason = 4;
         | 
| 35 | 
            +
            message Response
         | 
| 36 | 
            +
            {
         | 
| 37 | 
            +
              optional bytes response_proto = 1;            // Serialized response
         | 
| 38 | 
            +
              optional string error = 2;                    // Error message, if any
         | 
| 39 | 
            +
              optional bool callback = 3 [default = false]; // Was callback invoked (not sure what this is for)
         | 
| 40 | 
            +
              optional ErrorReason error_reason = 4;        // Error Reason
         | 
| 52 41 | 
             
            }
         | 
| 53 42 |  | 
| 54 43 | 
             
            // Possible error reasons
         | 
| 55 44 | 
             
            // The server-side errors are returned in the response from the server.
         | 
| 56 | 
            -
            // The client-side errors are returned by the client-side code when it doesn't | 
| 45 | 
            +
            // The client-side errors are returned by the client-side code when it doesn't
         | 
| 57 46 | 
             
            // have a response from the server.
         | 
| 58 | 
            -
            enum ErrorReason | 
| 59 | 
            -
             | 
| 47 | 
            +
            enum ErrorReason
         | 
| 48 | 
            +
            {
         | 
| 60 49 | 
             
              // Server-side errors
         | 
| 61 | 
            -
              BAD_REQUEST_DATA = 0; | 
| 62 | 
            -
              BAD_REQUEST_PROTO = 1; | 
| 63 | 
            -
              SERVICE_NOT_FOUND = 2; | 
| 64 | 
            -
              METHOD_NOT_FOUND = 3; | 
| 65 | 
            -
              RPC_ERROR = 4; | 
| 66 | 
            -
              RPC_FAILED = 5; | 
| 67 | 
            -
             | 
| 50 | 
            +
              BAD_REQUEST_DATA = 0;                         // Server received bad request data
         | 
| 51 | 
            +
              BAD_REQUEST_PROTO = 1;                        // Server received bad request proto
         | 
| 52 | 
            +
              SERVICE_NOT_FOUND = 2;                        // Service not found on server
         | 
| 53 | 
            +
              METHOD_NOT_FOUND = 3;                         // Method not found on server
         | 
| 54 | 
            +
              RPC_ERROR = 4;                                // Rpc threw exception on server
         | 
| 55 | 
            +
              RPC_FAILED = 5;                               // Rpc failed on server
         | 
| 56 | 
            +
             | 
| 68 57 | 
             
              // Client-side errors (these are returned by the client-side code)
         | 
| 69 | 
            -
              INVALID_REQUEST_PROTO = 6; | 
| 70 | 
            -
              BAD_RESPONSE_PROTO = 7; | 
| 71 | 
            -
              UNKNOWN_HOST = 8; | 
| 72 | 
            -
              IO_ERROR = 9; | 
| 58 | 
            +
              INVALID_REQUEST_PROTO = 6;                    // Rpc was called with invalid request proto
         | 
| 59 | 
            +
              BAD_RESPONSE_PROTO = 7;                       // Server returned a bad response proto
         | 
| 60 | 
            +
              UNKNOWN_HOST = 8;                             // Could not find supplied host
         | 
| 61 | 
            +
              IO_ERROR = 9;                                 // I/O error while communicating with server
         | 
| 73 62 | 
             
            }
         | 
| @@ -10,20 +10,23 @@ describe Protobuf::Rpc::Connectors::Common do | |
| 10 10 | 
             
                end
         | 
| 11 11 | 
             
              end
         | 
| 12 12 |  | 
| 13 | 
            -
               | 
| 13 | 
            +
              let(:subject_options) { {} }
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              subject { @subject ||= common_class.new(subject_options) }
         | 
| 14 16 |  | 
| 15 17 | 
             
              context "API" do
         | 
| 16 | 
            -
                specify{ subject.respond_to?(:any_callbacks?).should be_true }
         | 
| 17 | 
            -
                specify{ subject.respond_to?(: | 
| 18 | 
            -
                specify{ subject.respond_to?(: | 
| 19 | 
            -
                specify{ subject.respond_to?(: | 
| 20 | 
            -
                specify{ subject.respond_to?(: | 
| 21 | 
            -
                specify{ subject.respond_to?(: | 
| 22 | 
            -
                specify{ subject.respond_to?(: | 
| 23 | 
            -
                specify{ subject.respond_to?(: | 
| 18 | 
            +
                specify { subject.respond_to?(:any_callbacks?).should be_true }
         | 
| 19 | 
            +
                specify { subject.respond_to?(:request_caller).should be_true }
         | 
| 20 | 
            +
                specify { subject.respond_to?(:data_callback).should be_true }
         | 
| 21 | 
            +
                specify { subject.respond_to?(:error).should be_true }
         | 
| 22 | 
            +
                specify { subject.respond_to?(:fail).should be_true }
         | 
| 23 | 
            +
                specify { subject.respond_to?(:complete).should be_true }
         | 
| 24 | 
            +
                specify { subject.respond_to?(:parse_response).should be_true }
         | 
| 25 | 
            +
                specify { subject.respond_to?(:verify_options!).should be_true }
         | 
| 26 | 
            +
                specify { subject.respond_to?(:verify_callbacks).should be_true }
         | 
| 24 27 | 
             
              end
         | 
| 25 28 |  | 
| 26 | 
            -
               | 
| 29 | 
            +
              describe "#any_callbacks?" do
         | 
| 27 30 |  | 
| 28 31 | 
             
                [:@complete_cb, :@success_cb, :@failure_cb].each do |cb|
         | 
| 29 32 | 
             
                  it "returns true if #{cb} is provided" do
         | 
| @@ -42,7 +45,19 @@ describe Protobuf::Rpc::Connectors::Common do | |
| 42 45 |  | 
| 43 46 | 
             
              end
         | 
| 44 47 |  | 
| 45 | 
            -
               | 
| 48 | 
            +
              describe '#request_caller' do
         | 
| 49 | 
            +
                its(:request_caller) { should eq ::Protobuf.client_host }
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                context 'when "client_host" option is given to initializer' do
         | 
| 52 | 
            +
                  let(:hostname) { 'myhost.myserver.com' }
         | 
| 53 | 
            +
                  let(:subject_options) { { :client_host => hostname } }
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                  its(:request_caller) { should_not eq ::Protobuf.client_host }
         | 
| 56 | 
            +
                  its(:request_caller) { should eq hostname }
         | 
| 57 | 
            +
                end
         | 
| 58 | 
            +
              end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
              describe "#data_callback" do
         | 
| 46 61 | 
             
                it "changes state to use the data callback" do
         | 
| 47 62 | 
             
                  subject.data_callback("data")
         | 
| 48 63 | 
             
                  subject.instance_variable_get(:@used_data_callback).should be_true
         | 
| @@ -54,7 +69,28 @@ describe Protobuf::Rpc::Connectors::Common do | |
| 54 69 | 
             
                end
         | 
| 55 70 | 
             
              end
         | 
| 56 71 |  | 
| 57 | 
            -
               | 
| 72 | 
            +
              describe '#request_bytes' do
         | 
| 73 | 
            +
                let(:service) { Test::ResourceService }
         | 
| 74 | 
            +
                let(:method) { :find }
         | 
| 75 | 
            +
                let(:request) { '' }
         | 
| 76 | 
            +
                let(:client_host) { 'myhost.myservice.com' }
         | 
| 77 | 
            +
                let(:subject_options) { { :service => service,
         | 
| 78 | 
            +
                                          :method => method,
         | 
| 79 | 
            +
                                          :request => request,
         | 
| 80 | 
            +
                                          :client_host => client_host } }
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                let(:expected) { ::Protobuf::Socketrpc::Request.new({ :service_name => service.name,
         | 
| 83 | 
            +
                                                                      :method_name => 'find',
         | 
| 84 | 
            +
                                                                      :request_proto => '',
         | 
| 85 | 
            +
                                                                      :caller => client_host }) }
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                before { subject.stub(:validate_request_type!).and_return(true) }
         | 
| 88 | 
            +
                before { subject.should_not_receive(:fail) }
         | 
| 89 | 
            +
             | 
| 90 | 
            +
                its(:request_bytes) { should eq expected.serialize_to_string }
         | 
| 91 | 
            +
              end
         | 
| 92 | 
            +
             | 
| 93 | 
            +
              describe "#verify_callbacks" do
         | 
| 58 94 |  | 
| 59 95 | 
             
                it "sets @failure_cb to #data_callback when no callbacks are defined" do
         | 
| 60 96 | 
             
                  subject.verify_callbacks
         | 
    
        data/spec/lib/protobuf_spec.rb
    CHANGED
    
    | @@ -3,6 +3,22 @@ require 'protobuf' | |
| 3 3 |  | 
| 4 4 | 
             
            describe ::Protobuf do
         | 
| 5 5 |  | 
| 6 | 
            +
              describe '.client_host' do
         | 
| 7 | 
            +
                after { ::Protobuf.instance_variable_set(:@_client_host, nil) }
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                subject { ::Protobuf.client_host }
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                context 'when client_host is not pre-configured' do
         | 
| 12 | 
            +
                  it { should eq `hostname`.chomp }
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                context 'when client_host is pre-configured' do
         | 
| 16 | 
            +
                  let(:hostname) { 'override.myhost.com' }
         | 
| 17 | 
            +
                  before { ::Protobuf.client_host = hostname }
         | 
| 18 | 
            +
                  it { should eq hostname }
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
             | 
| 6 22 | 
             
              describe '.connector_type' do
         | 
| 7 23 | 
             
                before { described_class.instance_variable_set(:@_connector_type, nil) }
         | 
| 8 24 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: protobuf
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2.5. | 
| 4 | 
            +
              version: 2.5.1
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -10,11 +10,11 @@ authors: | |
| 10 10 | 
             
            autorequire: 
         | 
| 11 11 | 
             
            bindir: bin
         | 
| 12 12 | 
             
            cert_chain: []
         | 
| 13 | 
            -
            date: 2012-11- | 
| 13 | 
            +
            date: 2012-11-29 00:00:00.000000000Z
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 16 | 
             
              name: activesupport
         | 
| 17 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 17 | 
            +
              requirement: &2152959680 !ruby/object:Gem::Requirement
         | 
| 18 18 | 
             
                none: false
         | 
| 19 19 | 
             
                requirements:
         | 
| 20 20 | 
             
                - - ! '>='
         | 
| @@ -22,15 +22,10 @@ dependencies: | |
| 22 22 | 
             
                    version: '0'
         | 
| 23 23 | 
             
              type: :runtime
         | 
| 24 24 | 
             
              prerelease: false
         | 
| 25 | 
            -
              version_requirements:  | 
| 26 | 
            -
                none: false
         | 
| 27 | 
            -
                requirements:
         | 
| 28 | 
            -
                - - ! '>='
         | 
| 29 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 30 | 
            -
                    version: '0'
         | 
| 25 | 
            +
              version_requirements: *2152959680
         | 
| 31 26 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 32 27 | 
             
              name: ffi
         | 
| 33 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 28 | 
            +
              requirement: &2152958340 !ruby/object:Gem::Requirement
         | 
| 34 29 | 
             
                none: false
         | 
| 35 30 | 
             
                requirements:
         | 
| 36 31 | 
             
                - - ! '>='
         | 
| @@ -38,15 +33,10 @@ dependencies: | |
| 38 33 | 
             
                    version: '0'
         | 
| 39 34 | 
             
              type: :runtime
         | 
| 40 35 | 
             
              prerelease: false
         | 
| 41 | 
            -
              version_requirements:  | 
| 42 | 
            -
                none: false
         | 
| 43 | 
            -
                requirements:
         | 
| 44 | 
            -
                - - ! '>='
         | 
| 45 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 46 | 
            -
                    version: '0'
         | 
| 36 | 
            +
              version_requirements: *2152958340
         | 
| 47 37 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 48 38 | 
             
              name: multi_json
         | 
| 49 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 39 | 
            +
              requirement: &2152956800 !ruby/object:Gem::Requirement
         | 
| 50 40 | 
             
                none: false
         | 
| 51 41 | 
             
                requirements:
         | 
| 52 42 | 
             
                - - ! '>='
         | 
| @@ -54,15 +44,10 @@ dependencies: | |
| 54 44 | 
             
                    version: '0'
         | 
| 55 45 | 
             
              type: :runtime
         | 
| 56 46 | 
             
              prerelease: false
         | 
| 57 | 
            -
              version_requirements:  | 
| 58 | 
            -
                none: false
         | 
| 59 | 
            -
                requirements:
         | 
| 60 | 
            -
                - - ! '>='
         | 
| 61 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 62 | 
            -
                    version: '0'
         | 
| 47 | 
            +
              version_requirements: *2152956800
         | 
| 63 48 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 64 49 | 
             
              name: thor
         | 
| 65 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 50 | 
            +
              requirement: &2152954460 !ruby/object:Gem::Requirement
         | 
| 66 51 | 
             
                none: false
         | 
| 67 52 | 
             
                requirements:
         | 
| 68 53 | 
             
                - - ! '>='
         | 
| @@ -70,15 +55,10 @@ dependencies: | |
| 70 55 | 
             
                    version: '0'
         | 
| 71 56 | 
             
              type: :runtime
         | 
| 72 57 | 
             
              prerelease: false
         | 
| 73 | 
            -
              version_requirements:  | 
| 74 | 
            -
                none: false
         | 
| 75 | 
            -
                requirements:
         | 
| 76 | 
            -
                - - ! '>='
         | 
| 77 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 78 | 
            -
                    version: '0'
         | 
| 58 | 
            +
              version_requirements: *2152954460
         | 
| 79 59 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 80 60 | 
             
              name: eventmachine
         | 
| 81 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 61 | 
            +
              requirement: &2152953240 !ruby/object:Gem::Requirement
         | 
| 82 62 | 
             
                none: false
         | 
| 83 63 | 
             
                requirements:
         | 
| 84 64 | 
             
                - - ! '>='
         | 
| @@ -86,15 +66,10 @@ dependencies: | |
| 86 66 | 
             
                    version: '0'
         | 
| 87 67 | 
             
              type: :development
         | 
| 88 68 | 
             
              prerelease: false
         | 
| 89 | 
            -
              version_requirements:  | 
| 90 | 
            -
                none: false
         | 
| 91 | 
            -
                requirements:
         | 
| 92 | 
            -
                - - ! '>='
         | 
| 93 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 94 | 
            -
                    version: '0'
         | 
| 69 | 
            +
              version_requirements: *2152953240
         | 
| 95 70 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 96 71 | 
             
              name: ffi-rzmq
         | 
| 97 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 | 
            +
              requirement: &2152951540 !ruby/object:Gem::Requirement
         | 
| 98 73 | 
             
                none: false
         | 
| 99 74 | 
             
                requirements:
         | 
| 100 75 | 
             
                - - ! '>='
         | 
| @@ -102,15 +77,10 @@ dependencies: | |
| 102 77 | 
             
                    version: '0'
         | 
| 103 78 | 
             
              type: :development
         | 
| 104 79 | 
             
              prerelease: false
         | 
| 105 | 
            -
              version_requirements:  | 
| 106 | 
            -
                none: false
         | 
| 107 | 
            -
                requirements:
         | 
| 108 | 
            -
                - - ! '>='
         | 
| 109 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 110 | 
            -
                    version: '0'
         | 
| 80 | 
            +
              version_requirements: *2152951540
         | 
| 111 81 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 112 82 | 
             
              name: pry
         | 
| 113 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 83 | 
            +
              requirement: &2152950140 !ruby/object:Gem::Requirement
         | 
| 114 84 | 
             
                none: false
         | 
| 115 85 | 
             
                requirements:
         | 
| 116 86 | 
             
                - - ! '>='
         | 
| @@ -118,15 +88,10 @@ dependencies: | |
| 118 88 | 
             
                    version: '0'
         | 
| 119 89 | 
             
              type: :development
         | 
| 120 90 | 
             
              prerelease: false
         | 
| 121 | 
            -
              version_requirements:  | 
| 122 | 
            -
                none: false
         | 
| 123 | 
            -
                requirements:
         | 
| 124 | 
            -
                - - ! '>='
         | 
| 125 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 126 | 
            -
                    version: '0'
         | 
| 91 | 
            +
              version_requirements: *2152950140
         | 
| 127 92 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 128 93 | 
             
              name: pry-nav
         | 
| 129 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 94 | 
            +
              requirement: &2152948840 !ruby/object:Gem::Requirement
         | 
| 130 95 | 
             
                none: false
         | 
| 131 96 | 
             
                requirements:
         | 
| 132 97 | 
             
                - - ! '>='
         | 
| @@ -134,15 +99,10 @@ dependencies: | |
| 134 99 | 
             
                    version: '0'
         | 
| 135 100 | 
             
              type: :development
         | 
| 136 101 | 
             
              prerelease: false
         | 
| 137 | 
            -
              version_requirements:  | 
| 138 | 
            -
                none: false
         | 
| 139 | 
            -
                requirements:
         | 
| 140 | 
            -
                - - ! '>='
         | 
| 141 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 142 | 
            -
                    version: '0'
         | 
| 102 | 
            +
              version_requirements: *2152948840
         | 
| 143 103 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 144 104 | 
             
              name: rake
         | 
| 145 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 105 | 
            +
              requirement: &2152947240 !ruby/object:Gem::Requirement
         | 
| 146 106 | 
             
                none: false
         | 
| 147 107 | 
             
                requirements:
         | 
| 148 108 | 
             
                - - ! '>='
         | 
| @@ -150,15 +110,10 @@ dependencies: | |
| 150 110 | 
             
                    version: '0'
         | 
| 151 111 | 
             
              type: :development
         | 
| 152 112 | 
             
              prerelease: false
         | 
| 153 | 
            -
              version_requirements:  | 
| 154 | 
            -
                none: false
         | 
| 155 | 
            -
                requirements:
         | 
| 156 | 
            -
                - - ! '>='
         | 
| 157 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 158 | 
            -
                    version: '0'
         | 
| 113 | 
            +
              version_requirements: *2152947240
         | 
| 159 114 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 160 115 | 
             
              name: rake-compiler
         | 
| 161 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 116 | 
            +
              requirement: &2152946020 !ruby/object:Gem::Requirement
         | 
| 162 117 | 
             
                none: false
         | 
| 163 118 | 
             
                requirements:
         | 
| 164 119 | 
             
                - - ! '>='
         | 
| @@ -166,15 +121,10 @@ dependencies: | |
| 166 121 | 
             
                    version: '0'
         | 
| 167 122 | 
             
              type: :development
         | 
| 168 123 | 
             
              prerelease: false
         | 
| 169 | 
            -
              version_requirements:  | 
| 170 | 
            -
                none: false
         | 
| 171 | 
            -
                requirements:
         | 
| 172 | 
            -
                - - ! '>='
         | 
| 173 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 174 | 
            -
                    version: '0'
         | 
| 124 | 
            +
              version_requirements: *2152946020
         | 
| 175 125 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 176 126 | 
             
              name: rspec
         | 
| 177 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 127 | 
            +
              requirement: &2152871420 !ruby/object:Gem::Requirement
         | 
| 178 128 | 
             
                none: false
         | 
| 179 129 | 
             
                requirements:
         | 
| 180 130 | 
             
                - - ! '>='
         | 
| @@ -182,15 +132,10 @@ dependencies: | |
| 182 132 | 
             
                    version: '0'
         | 
| 183 133 | 
             
              type: :development
         | 
| 184 134 | 
             
              prerelease: false
         | 
| 185 | 
            -
              version_requirements:  | 
| 186 | 
            -
                none: false
         | 
| 187 | 
            -
                requirements:
         | 
| 188 | 
            -
                - - ! '>='
         | 
| 189 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 190 | 
            -
                    version: '0'
         | 
| 135 | 
            +
              version_requirements: *2152871420
         | 
| 191 136 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 192 137 | 
             
              name: simplecov
         | 
| 193 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 138 | 
            +
              requirement: &2152865540 !ruby/object:Gem::Requirement
         | 
| 194 139 | 
             
                none: false
         | 
| 195 140 | 
             
                requirements:
         | 
| 196 141 | 
             
                - - ! '>='
         | 
| @@ -198,15 +143,10 @@ dependencies: | |
| 198 143 | 
             
                    version: '0'
         | 
| 199 144 | 
             
              type: :development
         | 
| 200 145 | 
             
              prerelease: false
         | 
| 201 | 
            -
              version_requirements:  | 
| 202 | 
            -
                none: false
         | 
| 203 | 
            -
                requirements:
         | 
| 204 | 
            -
                - - ! '>='
         | 
| 205 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 206 | 
            -
                    version: '0'
         | 
| 146 | 
            +
              version_requirements: *2152865540
         | 
| 207 147 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 208 148 | 
             
              name: yard
         | 
| 209 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 149 | 
            +
              requirement: &2152816060 !ruby/object:Gem::Requirement
         | 
| 210 150 | 
             
                none: false
         | 
| 211 151 | 
             
                requirements:
         | 
| 212 152 | 
             
                - - ! '>='
         | 
| @@ -214,12 +154,7 @@ dependencies: | |
| 214 154 | 
             
                    version: '0'
         | 
| 215 155 | 
             
              type: :development
         | 
| 216 156 | 
             
              prerelease: false
         | 
| 217 | 
            -
              version_requirements:  | 
| 218 | 
            -
                none: false
         | 
| 219 | 
            -
                requirements:
         | 
| 220 | 
            -
                - - ! '>='
         | 
| 221 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 222 | 
            -
                    version: '0'
         | 
| 157 | 
            +
              version_requirements: *2152816060
         | 
| 223 158 | 
             
            description: Google Protocol Buffers v2.4.1 Serialization and RPC implementation for
         | 
| 224 159 | 
             
              Ruby.
         | 
| 225 160 | 
             
            email:
         | 
| @@ -402,7 +337,6 @@ files: | |
| 402 337 | 
             
            - lib/protobuf/version.rb
         | 
| 403 338 | 
             
            - lib/protobuf/wire_type.rb
         | 
| 404 339 | 
             
            - lib/protobuf/zmq.rb
         | 
| 405 | 
            -
            - proto/rpc.pb.rb
         | 
| 406 340 | 
             
            - proto/rpc.proto
         | 
| 407 341 | 
             
            - protobuf.gemspec
         | 
| 408 342 | 
             
            - spec/benchmark/tasks.rb
         | 
| @@ -498,7 +432,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 498 432 | 
             
                  version: '0'
         | 
| 499 433 | 
             
                  segments:
         | 
| 500 434 | 
             
                  - 0
         | 
| 501 | 
            -
                  hash:  | 
| 435 | 
            +
                  hash: -4197432233485309916
         | 
| 502 436 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 503 437 | 
             
              none: false
         | 
| 504 438 | 
             
              requirements:
         | 
| @@ -507,12 +441,91 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 507 441 | 
             
                  version: '0'
         | 
| 508 442 | 
             
                  segments:
         | 
| 509 443 | 
             
                  - 0
         | 
| 510 | 
            -
                  hash:  | 
| 444 | 
            +
                  hash: -4197432233485309916
         | 
| 511 445 | 
             
            requirements: []
         | 
| 512 446 | 
             
            rubyforge_project: 
         | 
| 513 | 
            -
            rubygems_version: 1.8. | 
| 447 | 
            +
            rubygems_version: 1.8.15
         | 
| 514 448 | 
             
            signing_key: 
         | 
| 515 449 | 
             
            specification_version: 3
         | 
| 516 450 | 
             
            summary: Google Protocol Buffers v2.4.1 Serialization and RPC implementation for Ruby.
         | 
| 517 | 
            -
            test_files: | 
| 451 | 
            +
            test_files:
         | 
| 452 | 
            +
            - spec/benchmark/tasks.rb
         | 
| 453 | 
            +
            - spec/functional/embedded_service_spec.rb
         | 
| 454 | 
            +
            - spec/functional/evented_server_spec.rb
         | 
| 455 | 
            +
            - spec/functional/socket_server_spec.rb
         | 
| 456 | 
            +
            - spec/functional/zmq_server_spec.rb
         | 
| 457 | 
            +
            - spec/lib/protobuf/cli_spec.rb
         | 
| 458 | 
            +
            - spec/lib/protobuf/enum_spec.rb
         | 
| 459 | 
            +
            - spec/lib/protobuf/enum_value_spec.rb
         | 
| 460 | 
            +
            - spec/lib/protobuf/logger_spec.rb
         | 
| 461 | 
            +
            - spec/lib/protobuf/message_spec.rb
         | 
| 462 | 
            +
            - spec/lib/protobuf/rpc/client_spec.rb
         | 
| 463 | 
            +
            - spec/lib/protobuf/rpc/connector_spec.rb
         | 
| 464 | 
            +
            - spec/lib/protobuf/rpc/connectors/base_spec.rb
         | 
| 465 | 
            +
            - spec/lib/protobuf/rpc/connectors/common_spec.rb
         | 
| 466 | 
            +
            - spec/lib/protobuf/rpc/connectors/socket_spec.rb
         | 
| 467 | 
            +
            - spec/lib/protobuf/rpc/connectors/zmq_spec.rb
         | 
| 468 | 
            +
            - spec/lib/protobuf/rpc/servers/evented_server_spec.rb
         | 
| 469 | 
            +
            - spec/lib/protobuf/rpc/servers/socket_server_spec.rb
         | 
| 470 | 
            +
            - spec/lib/protobuf/rpc/servers/zmq/broker_spec.rb
         | 
| 471 | 
            +
            - spec/lib/protobuf/rpc/servers/zmq/server_spec.rb
         | 
| 472 | 
            +
            - spec/lib/protobuf/rpc/servers/zmq/util_spec.rb
         | 
| 473 | 
            +
            - spec/lib/protobuf/rpc/servers/zmq/worker_spec.rb
         | 
| 474 | 
            +
            - spec/lib/protobuf/rpc/service_dispatcher_spec.rb
         | 
| 475 | 
            +
            - spec/lib/protobuf/rpc/service_filters_spec.rb
         | 
| 476 | 
            +
            - spec/lib/protobuf/rpc/service_spec.rb
         | 
| 477 | 
            +
            - spec/lib/protobuf_spec.rb
         | 
| 478 | 
            +
            - spec/spec_helper.rb
         | 
| 479 | 
            +
            - spec/support/all.rb
         | 
| 480 | 
            +
            - spec/support/server.rb
         | 
| 481 | 
            +
            - spec/support/test/enum.pb.rb
         | 
| 482 | 
            +
            - spec/support/test/enum.proto
         | 
| 483 | 
            +
            - spec/support/test/resource.pb.rb
         | 
| 484 | 
            +
            - spec/support/test/resource.proto
         | 
| 485 | 
            +
            - spec/support/test/resource_service.rb
         | 
| 486 | 
            +
            - spec/support/test_app_file.rb
         | 
| 487 | 
            +
            - spec/support/tolerance_matcher.rb
         | 
| 488 | 
            +
            - test/data/data.bin
         | 
| 489 | 
            +
            - test/data/data_source.py
         | 
| 490 | 
            +
            - test/data/types.bin
         | 
| 491 | 
            +
            - test/data/types_source.py
         | 
| 492 | 
            +
            - test/data/unk.png
         | 
| 493 | 
            +
            - test/proto/addressbook.pb.rb
         | 
| 494 | 
            +
            - test/proto/addressbook.proto
         | 
| 495 | 
            +
            - test/proto/addressbook_base.pb.rb
         | 
| 496 | 
            +
            - test/proto/addressbook_base.proto
         | 
| 497 | 
            +
            - test/proto/addressbook_ext.pb.rb
         | 
| 498 | 
            +
            - test/proto/addressbook_ext.proto
         | 
| 499 | 
            +
            - test/proto/collision.pb.rb
         | 
| 500 | 
            +
            - test/proto/collision.proto
         | 
| 501 | 
            +
            - test/proto/ext_collision.pb.rb
         | 
| 502 | 
            +
            - test/proto/ext_collision.proto
         | 
| 503 | 
            +
            - test/proto/ext_range.pb.rb
         | 
| 504 | 
            +
            - test/proto/ext_range.proto
         | 
| 505 | 
            +
            - test/proto/float_default.proto
         | 
| 506 | 
            +
            - test/proto/lowercase.pb.rb
         | 
| 507 | 
            +
            - test/proto/lowercase.proto
         | 
| 508 | 
            +
            - test/proto/merge.pb.rb
         | 
| 509 | 
            +
            - test/proto/merge.proto
         | 
| 510 | 
            +
            - test/proto/nested.pb.rb
         | 
| 511 | 
            +
            - test/proto/nested.proto
         | 
| 512 | 
            +
            - test/proto/optional_field.pb.rb
         | 
| 513 | 
            +
            - test/proto/optional_field.proto
         | 
| 514 | 
            +
            - test/proto/packed.pb.rb
         | 
| 515 | 
            +
            - test/proto/packed.proto
         | 
| 516 | 
            +
            - test/proto/rpc.proto
         | 
| 517 | 
            +
            - test/proto/types.pb.rb
         | 
| 518 | 
            +
            - test/proto/types.proto
         | 
| 519 | 
            +
            - test/test_addressbook.rb
         | 
| 520 | 
            +
            - test/test_enum_value.rb
         | 
| 521 | 
            +
            - test/test_extension.rb
         | 
| 522 | 
            +
            - test/test_lowercase.rb
         | 
| 523 | 
            +
            - test/test_message.rb
         | 
| 524 | 
            +
            - test/test_optional_field.rb
         | 
| 525 | 
            +
            - test/test_packed_field.rb
         | 
| 526 | 
            +
            - test/test_parse.rb
         | 
| 527 | 
            +
            - test/test_repeated_types.rb
         | 
| 528 | 
            +
            - test/test_serialize.rb
         | 
| 529 | 
            +
            - test/test_standard_message.rb
         | 
| 530 | 
            +
            - test/test_types.rb
         | 
| 518 531 | 
             
            has_rdoc: 
         | 
    
        data/proto/rpc.pb.rb
    DELETED
    
    | @@ -1,48 +0,0 @@ | |
| 1 | 
            -
            ##
         | 
| 2 | 
            -
            # This file is auto-generated. DO NOT EDIT!
         | 
| 3 | 
            -
            #
         | 
| 4 | 
            -
            require 'protobuf/message'
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            module Protobuf
         | 
| 7 | 
            -
              module Socketrpc
         | 
| 8 | 
            -
                ##
         | 
| 9 | 
            -
                # Enum Classes
         | 
| 10 | 
            -
                #
         | 
| 11 | 
            -
                class ErrorReason < ::Protobuf::Enum; end
         | 
| 12 | 
            -
                
         | 
| 13 | 
            -
                ##
         | 
| 14 | 
            -
                # Message Classes
         | 
| 15 | 
            -
                #
         | 
| 16 | 
            -
                class Request < ::Protobuf::Message; end
         | 
| 17 | 
            -
                class Response < ::Protobuf::Message; end
         | 
| 18 | 
            -
                
         | 
| 19 | 
            -
                ##
         | 
| 20 | 
            -
                # Enum Values
         | 
| 21 | 
            -
                #
         | 
| 22 | 
            -
                ::Protobuf::Socketrpc::ErrorReason.define :BAD_REQUEST_DATA, 0
         | 
| 23 | 
            -
                ::Protobuf::Socketrpc::ErrorReason.define :BAD_REQUEST_PROTO, 1
         | 
| 24 | 
            -
                ::Protobuf::Socketrpc::ErrorReason.define :SERVICE_NOT_FOUND, 2
         | 
| 25 | 
            -
                ::Protobuf::Socketrpc::ErrorReason.define :METHOD_NOT_FOUND, 3
         | 
| 26 | 
            -
                ::Protobuf::Socketrpc::ErrorReason.define :RPC_ERROR, 4
         | 
| 27 | 
            -
                ::Protobuf::Socketrpc::ErrorReason.define :RPC_FAILED, 5
         | 
| 28 | 
            -
                ::Protobuf::Socketrpc::ErrorReason.define :INVALID_REQUEST_PROTO, 6
         | 
| 29 | 
            -
                ::Protobuf::Socketrpc::ErrorReason.define :BAD_RESPONSE_PROTO, 7
         | 
| 30 | 
            -
                ::Protobuf::Socketrpc::ErrorReason.define :UNKNOWN_HOST, 8
         | 
| 31 | 
            -
                ::Protobuf::Socketrpc::ErrorReason.define :IO_ERROR, 9
         | 
| 32 | 
            -
                
         | 
| 33 | 
            -
                
         | 
| 34 | 
            -
                ##
         | 
| 35 | 
            -
                # Message Fields
         | 
| 36 | 
            -
                #
         | 
| 37 | 
            -
                ::Protobuf::Socketrpc::Request.required(::Protobuf::Field::StringField, :service_name, 1)
         | 
| 38 | 
            -
                ::Protobuf::Socketrpc::Request.required(::Protobuf::Field::StringField, :method_name, 2)
         | 
| 39 | 
            -
                ::Protobuf::Socketrpc::Request.optional(::Protobuf::Field::BytesField, :request_proto, 3)
         | 
| 40 | 
            -
                
         | 
| 41 | 
            -
                ::Protobuf::Socketrpc::Response.optional(::Protobuf::Field::BytesField, :response_proto, 1)
         | 
| 42 | 
            -
                ::Protobuf::Socketrpc::Response.optional(::Protobuf::Field::StringField, :error, 2)
         | 
| 43 | 
            -
                ::Protobuf::Socketrpc::Response.optional(::Protobuf::Field::BoolField, :callback, 3, :default => false)
         | 
| 44 | 
            -
                ::Protobuf::Socketrpc::Response.optional(::Protobuf::Socketrpc::ErrorReason, :error_reason, 4)
         | 
| 45 | 
            -
                
         | 
| 46 | 
            -
                
         | 
| 47 | 
            -
              end
         | 
| 48 | 
            -
            end
         |