dapr 0.1.7 → 0.1.9
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.
- checksums.yaml +4 -4
- data/lib/dapr/service/subscriber.rb +70 -0
- data/lib/dapr/service.rb +13 -0
- data/lib/dapr/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4258ba872f6fa541527da36af8aefe85d4e2de853f4ea241804925bdad24b77e
|
4
|
+
data.tar.gz: 61df815307172cf91bfd147d64709c198efdfb11c75a70f4946c7bd272eded95
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad97546a920cd7c77dbca97aa003dd7fce9b101e88d2e76f90e45574c181cf28bdd1185e28028efdd8fe210f16c8d174f2e1ff387e58437a6f4dac73ff2c1ab5
|
7
|
+
data.tar.gz: 92db287ba25e3e571348a301257cb743c84a938bc8254e2c84de0fb2dbeb035c66ea7ed47de64fd2474157ce55bae3540adbe386babf20208535bbfec7eb985a
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../service'
|
4
|
+
|
5
|
+
$stdout.sync = true
|
6
|
+
|
7
|
+
module Rubyists
|
8
|
+
module Dapr
|
9
|
+
module Service
|
10
|
+
# The Subscriber class is a simple implementation of a Dapr subscriber service.
|
11
|
+
class Subscriber
|
12
|
+
include SemanticLogger::Loggable
|
13
|
+
|
14
|
+
attr_reader(:service_proto, :runtime_proto, :pubsub_name, :topics, :event_handler)
|
15
|
+
|
16
|
+
Port = ENV.fetch('DAPR_GRPC_APP_PORT', 50_051)
|
17
|
+
|
18
|
+
def initialize(pubsub_name:,
|
19
|
+
topics:,
|
20
|
+
handler: nil,
|
21
|
+
service_proto: Dapr::Proto::Runtime::V1::AppCallback::Service,
|
22
|
+
runtime_proto: Dapr::Proto::Runtime::V1)
|
23
|
+
@topics = Array(topics)
|
24
|
+
@pubsub_name = pubsub_name
|
25
|
+
@service_proto = service_proto
|
26
|
+
@runtime_proto = runtime_proto
|
27
|
+
@handler = handler
|
28
|
+
end
|
29
|
+
|
30
|
+
def handle_event!(topic_event, topic_call)
|
31
|
+
return handler&.call(topic_event, topic_call) if handler.respond_to?(:call)
|
32
|
+
|
33
|
+
logger.warn('Unhandled event: event handler does not respond to #call',
|
34
|
+
topic_event:,
|
35
|
+
topic_call:,
|
36
|
+
handler:)
|
37
|
+
end
|
38
|
+
|
39
|
+
def subscriptions
|
40
|
+
@subscriptions ||= topics.map do |topic|
|
41
|
+
runtime_proto::TopicSubscription.new(pubsub_name:, topic:)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def service # rubocop:disable Metrics/MethodLength
|
46
|
+
return @service if @service
|
47
|
+
|
48
|
+
subscriber = self
|
49
|
+
@service = Class.new(service_proto) do
|
50
|
+
define_method(:on_topic_event) do |topic_event, topic_call|
|
51
|
+
subscriber.handle_event!(topic_event, topic_call)
|
52
|
+
Google::Protobuf::Empty.new
|
53
|
+
end
|
54
|
+
define_method(:list_topic_subscriptions) do |_empty, _call|
|
55
|
+
subscriber.runtime_proto::ListTopicSubscriptionsResponse.new(subscriptions: subscriber.subscriptions)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def start!
|
61
|
+
server = GRPC::RpcServer.new
|
62
|
+
server.add_http2_port("0.0.0.0:#{Port}", :this_port_is_insecure)
|
63
|
+
server.handle(service)
|
64
|
+
log.warn('Starting Dapr Subscriber service', port: Port)
|
65
|
+
server.run_till_terminated_or_interrupted([1, +'int', +'SIGQUIT'])
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/lib/dapr/service.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../dapr'
|
4
|
+
require 'dapr/proto/runtime/v1/appcallback_services_pb'
|
5
|
+
|
6
|
+
module Rubyists
|
7
|
+
module Dapr
|
8
|
+
# Namespace for Dapr Service classes
|
9
|
+
module Service
|
10
|
+
include SemanticLogger::Loggable
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/dapr/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dapr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tj (bougyman) Vanderpoel
|
@@ -54,6 +54,8 @@ files:
|
|
54
54
|
- lib/dapr.rb
|
55
55
|
- lib/dapr/client.rb
|
56
56
|
- lib/dapr/client/publisher.rb
|
57
|
+
- lib/dapr/service.rb
|
58
|
+
- lib/dapr/service/subscriber.rb
|
57
59
|
- lib/dapr/version.rb
|
58
60
|
- sig/dapr.rbs
|
59
61
|
homepage: https://github.com/rubyists/dapr
|