Skip to content

Commit

Permalink
changes to Rpc and Service, services.proto and services.pb.rb in spec…
Browse files Browse the repository at this point in the history
…/proto_files/
  • Loading branch information
bufdev committed Aug 14, 2013
1 parent fe558a3 commit 0f1f91b
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 5 deletions.
25 changes: 21 additions & 4 deletions lib/protocol_buffers/runtime/rpc.rb
Original file line number Diff line number Diff line change
@@ -1,20 +1,37 @@
module ProtocolBuffers
class Rpc
attr_reader :name, :proto_name, :request_class, :response_class
attr_reader :name, :proto_name, :request_class, :response_class, :service_class

def initialize(name, proto_name, request_class, response_class)
def initialize(name, proto_name, request_class, response_class, service_class)
@name = name
@proto_name = proto_name.dup.freeze
@request_class = request_class
@response_class = response_class
@service_class = service_class
end

def eql?(other)
self.class.equal?(other.class) &&\
name == other.name &&\
proto_name == other.proto_name &&\
request_class == other.request_class &&\
response_class == other.response_class &&\
service_class == other.service_class
end

alias == eql?

def hash
name.hash ^ proto_name.hash ^ request_class.hash ^ response_class.hash ^ service_class.hash
end

def to_s
@hash ||= {
:name => name,
:proto_name => proto_name,
:request_class => request_class,
:response_class => response_class
:request_class_name => request_class.name,
:response_class_name => response_class.name,
:service_class_name => service_class.name
}.freeze
@hash.to_s
end
Expand Down
2 changes: 1 addition & 1 deletion lib/protocol_buffers/runtime/service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ def self.rpcs
def self.rpc(name, proto_name, request_type, response_type)
@rpcs ||= Array.new
@rpcs = @rpcs.dup
@rpcs << Rpc.new(name.to_sym, proto_name, request_type, response_type)
@rpcs << Rpc.new(name.to_sym, proto_name, request_type, response_type, self)
@rpcs.freeze
end
end
Expand Down
43 changes: 43 additions & 0 deletions spec/proto_files/services.pb.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/usr/bin/env ruby
# Generated by the protocol buffer compiler. DO NOT EDIT!

require 'protocol_buffers'

module Services
# forward declarations
class FooRequest < ::ProtocolBuffers::Message; end
class FooResponse < ::ProtocolBuffers::Message; end
class BarRequest < ::ProtocolBuffers::Message; end
class BarResponse < ::ProtocolBuffers::Message; end

class FooRequest < ::ProtocolBuffers::Message
set_fully_qualified_name "services.FooRequest"

optional :sint64, :one, 1
end

class FooResponse < ::ProtocolBuffers::Message
set_fully_qualified_name "services.FooResponse"

optional :uint64, :two, 1
end

class BarRequest < ::ProtocolBuffers::Message
set_fully_qualified_name "services.BarRequest"

optional :string, :three, 1
end

class BarResponse < ::ProtocolBuffers::Message
set_fully_qualified_name "services.BarResponse"

optional :bytes, :four, 1
end

class FooBarService < ::ProtocolBuffers::Service
set_fully_qualified_name "services.FooBarService"

rpc :get_foo, "GetFoo", ::Services::FooRequest, ::Services::FooResponse
rpc :get_bar, "GetBar", ::Services::BarRequest, ::Services::BarResponse
end
end
22 changes: 22 additions & 0 deletions spec/proto_files/services.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package services;

message FooRequest {
optional sint64 one = 1;
}

message FooResponse {
optional uint64 two = 1;
}

message BarRequest {
optional string three = 1;
}

message BarResponse {
optional bytes four = 1;
}

service FooBarService {
rpc GetFoo(FooRequest) returns (FooResponse);
rpc GetBar(BarRequest) returns (BarResponse);
}

0 comments on commit 0f1f91b

Please sign in to comment.