route_guide 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cdeed664737a7158414a45109d8004095d2b4fd938884aa48308559b315301a3
4
- data.tar.gz: 6b57a38724df01709371539f44f5fa03969eebb3aa33ff9a9b878323d25ac50a
3
+ metadata.gz: 306b79419a33139769d321a1a4221408f633eac26d9d2ebcbae7d53efdfde67a
4
+ data.tar.gz: 21d43d8d4317bcc007711a883ed8d8ba7f94b7a0583455dfa40db4b4e5573ec1
5
5
  SHA512:
6
- metadata.gz: f5f44cba98251ef93b4e2fe5dbb40cababe43618daf48860751a76ec42021dbb663c1c3856ef5b0fae68c80f79788bcbaa8ffd78902ad25381aafb6b3e5866d5
7
- data.tar.gz: 27d80d941d0fa5a29c10edcf93a3295c691b5d5f5e9161b081a4b86e1a4f291204679ef8205cdc2c0faa6ed8226e5f7f635b2a258568ec6ad13ccd4e5ec0e343
6
+ metadata.gz: 6fe81484e7005e9ffb9d6351a7e07a7474478d8ef06c2d3c66ef1ff1db72bf18d87116eea778377f1acb1b550d5f7a6235b2d3b42eed81b14b7d3bcb4ae8d3c4
7
+ data.tar.gz: 54914673ae41f39bc028359ef28723224b5f63b7a9520ef1d347671142378c63b56e87c9e51fd7fbe8d0d3ab96f3b8ef12cd25db6a205d63b5b413553389710b
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- route_guide (0.1.4)
4
+ route_guide (0.1.5)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -15,36 +15,40 @@ If bundler is not being used to manage dependencies, install the gem by executin
15
15
  ## Usage
16
16
 
17
17
  You need to implement a server and a client. Then you can use this gem to connect between
18
- the two.
18
+ the two. Check the `examples` folder for a working example.
19
19
 
20
20
  ### Server side service implementation
21
21
 
22
- 1. Create the service in `directions_service.rb`:
22
+ 1. Create a `Gemfile` below then run `bundle` install:
23
23
 
24
24
  ```ruby
25
+ # frozen_string_literal: true
26
+
27
+ source "https://rubygems.org"
28
+
29
+ gem "grpc"
30
+ gem "route_guide"
31
+ ```
32
+
33
+ 2. Setup the gRPC server in `server.rb`:
34
+
35
+ ```ruby
36
+ #!/usr/bin/env ruby
37
+
25
38
  require 'grpc'
26
39
  require 'route_guide'
27
40
 
28
41
  class DirectionsService < RouteGuide::DirectionsService::Service
29
42
  def direct_it(direction_req, _unused_call)
30
43
  puts "Received direction request for #{direction_req}"
44
+ # build response from object
31
45
  RouteGuide::DirectionsResponse.new(
32
- directions: response.direction,
33
- approximate_time_of_travel_in_hrs: response.approximate_time_of_travel_in_hrs,
34
- approximate_distance_in_kms: response.approximate_distance_in_kms
46
+ directions: 'response',
47
+ approximate_time_of_travel_in_hrs: 4,
48
+ approximate_distance_in_kms: 30
35
49
  )
36
50
  end
37
51
  end
38
- ```
39
-
40
- 2. Setup the gRPC server in `server.rb`:
41
-
42
- ```ruby
43
- #!/usr/bin/env ruby
44
-
45
- require 'rubygems'
46
- require 'route_guide'
47
- require_relative 'directions_service'
48
52
 
49
53
  class RouteGuideServer
50
54
  class << self
@@ -55,8 +59,10 @@ class RouteGuideServer
55
59
  private
56
60
 
57
61
  def start_grpc_server
62
+ # create server
58
63
  @server = GRPC::RpcServer.new
59
64
  @server.add_http2_port("0.0.0.0:50052", :this_port_is_insecure)
65
+ # assign server to a grpc handler
60
66
  @server.handle(DirectionsService)
61
67
  @server.run_till_terminated
62
68
  end
@@ -83,12 +89,15 @@ require 'grpc'
83
89
  require 'route_guide'
84
90
 
85
91
  def test_single_call
92
+ # 1. connect to server service
86
93
  stub = RouteGuide::DirectionsService::Stub.new('0.0.0.0:50052', :this_channel_is_insecure)
94
+ # 2. build request object
87
95
  req = RouteGuide::DirectionsRequest.new(
88
96
  current_location: 'current_location',
89
97
  target_location: 'travel_location',
90
98
  means_of_travel: 'means_of_travel'
91
99
  )
100
+ # 3. call the remote method with request object as parameter
92
101
  resp_obj = stub.direct_it(req)
93
102
  puts "Response: #{resp_obj}"
94
103
  end
@@ -96,7 +105,11 @@ end
96
105
  test_single_call
97
106
  ```
98
107
 
99
- Then run the client in a separate terminal.
108
+ 2. Then run the client in a separate terminal. Run client with;
109
+
110
+ ```sh
111
+ bundle exec client.rb
112
+ ```
100
113
 
101
114
  ## Development
102
115
 
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "grpc"
6
+ gem "route_guide"
@@ -0,0 +1,9 @@
1
+ # Examples
2
+
3
+ ## Usage
4
+
5
+ - Open a terminal tab.
6
+ - Run `ruby server.rb`.
7
+ - Open another terminal tab.
8
+ - Run `ruby client.rb`.
9
+ - Go to the server tab and see the logs.
data/examples/client.rb CHANGED
@@ -4,12 +4,15 @@ require 'grpc'
4
4
  require 'route_guide'
5
5
 
6
6
  def test_single_call
7
+ # 1. connect to server service
7
8
  stub = RouteGuide::DirectionsService::Stub.new('0.0.0.0:50052', :this_channel_is_insecure)
9
+ # 2. build request object
8
10
  req = RouteGuide::DirectionsRequest.new(
9
11
  current_location: 'current_location',
10
12
  target_location: 'travel_location',
11
13
  means_of_travel: 'means_of_travel'
12
14
  )
15
+ # 3. call remote method with request object as parameter
13
16
  resp_obj = stub.direct_it(req)
14
17
  puts "Response: #{resp_obj}"
15
18
  end
data/examples/server.rb CHANGED
@@ -1,8 +1,20 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'grpc'
3
4
  require 'rubygems'
4
5
  require 'route_guide'
5
- require_relative 'directions_service'
6
+
7
+ class DirectionsService < RouteGuide::DirectionsService::Service
8
+ def direct_it(direction_req, _unused_call)
9
+ puts "Received direction request for #{direction_req}"
10
+ # build response from object
11
+ RouteGuide::DirectionsResponse.new(
12
+ directions: 'response',
13
+ approximate_time_of_travel_in_hrs: 4,
14
+ approximate_distance_in_kms: 30
15
+ )
16
+ end
17
+ end
6
18
 
7
19
  class RouteGuideServer
8
20
  class << self
@@ -13,8 +25,10 @@ class RouteGuideServer
13
25
  private
14
26
 
15
27
  def start_grpc_server
28
+ # create server
16
29
  @server = GRPC::RpcServer.new
17
30
  @server.add_http2_port("0.0.0.0:50052", :this_port_is_insecure)
31
+ # assign server to a grpc handler
18
32
  @server.handle(DirectionsService)
19
33
  @server.run_till_terminated
20
34
  end
@@ -2,7 +2,7 @@
2
2
  # Source: route_guide.proto for package 'route_guide'
3
3
 
4
4
  require 'grpc'
5
- require_relative 'route_guide_pb'
5
+ require 'route_guide_pb'
6
6
 
7
7
  module RouteGuide
8
8
  module DirectionsService
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RouteGuide
4
- VERSION = "0.1.4"
4
+ VERSION = "0.1.5"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: route_guide
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - sylvance_theone
@@ -30,8 +30,9 @@ files:
30
30
  - Makefile
31
31
  - README.md
32
32
  - Rakefile
33
+ - examples/Gemfile.example
34
+ - examples/README.md
33
35
  - examples/client.rb
34
- - examples/directions_service.rb
35
36
  - examples/server.rb
36
37
  - lib/route_guide.rb
37
38
  - lib/route_guide/route_guide_pb.rb
@@ -1,13 +0,0 @@
1
- require 'grpc'
2
- require 'route_guide'
3
-
4
- class DirectionsService < RouteGuide::DirectionsService::Service
5
- def direct_it(direction_req, _unused_call)
6
- puts "Received direction request for #{direction_req}"
7
- RouteGuide::DirectionsResponse.new(
8
- directions: response.direction,
9
- approximate_time_of_travel_in_hrs: response.approximate_time_of_travel_in_hrs,
10
- approximate_distance_in_kms: response.approximate_distance_in_kms
11
- )
12
- end
13
- end