huginn 0.0.1.alpha

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: cc95c963bad7718f7661f0bf5250898859d48c3e
4
+ data.tar.gz: a95db7bd705ed941788df3139ea8221700b729c6
5
+ SHA512:
6
+ metadata.gz: 0115b7a139e2887a825ea67f1bf601d90ad37312878c11d7799010be887ce596b0ec3d7fb71058ebfbf32ae9c186185236c10c84d1c844e21bdad2266dbfbea9
7
+ data.tar.gz: 0fc24092f3f685b3a803423320bfe3da953c0f07cc5f0be3a42cabaa5636996768328343c1910247474a6d92bde38546e31c747c53a7d3e097e08f82e66fa695
@@ -0,0 +1,2 @@
1
+ B�I����C��݁���>z��zXߊ�<@����jJ~�jo:�,�*G�ȋ�>6$<�j����R�jt@�)���������7����s�x����q��&�*X0�*|#�p�iVt ~�J��KK�6м������
2
+ ���y��[@(�B&�.�=1��nh�u&[�h>��%� ����x�����J%*.o<f_�_����o��_2��>��uJ,�<����ؓ����#H�Ti��s�k�yѨg�[X
Binary file
@@ -0,0 +1,12 @@
1
+ /.DS_Store
2
+ /.bundle/
3
+ /.idea/
4
+ /.ruby-version
5
+ /.yardoc
6
+ /Gemfile.lock
7
+ /_yardoc/
8
+ /coverage/
9
+ /doc/
10
+ /pkg/
11
+ /spec/reports/
12
+ /tmp/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.2
4
+ - jruby-1.7.24
5
+ - jruby-9.0.5.0
6
+ before_install: gem install bundler -v 1.11.2
7
+ cache: bundler
@@ -0,0 +1,10 @@
1
+ --no-private
2
+ --embed-mixins
3
+ --markup markdown
4
+ --title=Paho
5
+ --template default
6
+
7
+ ./lib/**/*.rb
8
+ -
9
+ README.md
10
+ LICENSE.txt
@@ -0,0 +1,49 @@
1
+ # Contributor Code of Conduct
2
+
3
+ As contributors and maintainers of this project, and in the interest of
4
+ fostering an open and welcoming community, we pledge to respect all people who
5
+ contribute through reporting issues, posting feature requests, updating
6
+ documentation, submitting pull requests or patches, and other activities.
7
+
8
+ We are committed to making participation in this project a harassment-free
9
+ experience for everyone, regardless of level of experience, gender, gender
10
+ identity and expression, sexual orientation, disability, personal appearance,
11
+ body size, race, ethnicity, age, religion, or nationality.
12
+
13
+ Examples of unacceptable behavior by participants include:
14
+
15
+ * The use of sexualized language or imagery
16
+ * Personal attacks
17
+ * Trolling or insulting/derogatory comments
18
+ * Public or private harassment
19
+ * Publishing other's private information, such as physical or electronic
20
+ addresses, without explicit permission
21
+ * Other unethical or unprofessional conduct
22
+
23
+ Project maintainers have the right and responsibility to remove, edit, or
24
+ reject comments, commits, code, wiki edits, issues, and other contributions
25
+ that are not aligned to this Code of Conduct, or to ban temporarily or
26
+ permanently any contributor for other behaviors that they deem inappropriate,
27
+ threatening, offensive, or harmful.
28
+
29
+ By adopting this Code of Conduct, project maintainers commit themselves to
30
+ fairly and consistently applying these principles to every aspect of managing
31
+ this project. Project maintainers who do not follow or enforce the Code of
32
+ Conduct may be permanently removed from the project team.
33
+
34
+ This code of conduct applies both within project spaces and in public spaces
35
+ when an individual is representing the project or its community.
36
+
37
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
38
+ reported by contacting a project maintainer at andrei@andreimaxim.ro. All
39
+ complaints will be reviewed and investigated and will result in a response that
40
+ is deemed necessary and appropriate to the circumstances. Maintainers are
41
+ obligated to maintain confidentiality with regard to the reporter of an
42
+ incident.
43
+
44
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
45
+ version 1.3.0, available at
46
+ [http://contributor-covenant.org/version/1/3/0/][version]
47
+
48
+ [homepage]: http://contributor-covenant.org
49
+ [version]: http://contributor-covenant.org/version/1/3/0/
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in huginn.gemspec
4
+ gemspec
5
+
6
+ gem 'codeclimate-test-reporter', group: :test, require: nil
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Andrei Maxim
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.
@@ -0,0 +1,31 @@
1
+ [![Gem Version](https://badge.fury.io/rb/huginn.svg)](https://badge.fury.io/rb/huginn)
2
+ [![Build Status](https://travis-ci.org/andreimaxim/huginn.svg?branch=master)](https://travis-ci.org/andreimaxim/huginn)
3
+ [![Test Coverage](https://codeclimate.com/github/andreimaxim/huginn/badges/coverage.svg)](https://codeclimate.com/github/andreimaxim/huginn/coverage)
4
+ [![Code Climate](https://codeclimate.com/github/andreimaxim/huginn/badges/gpa.svg)](https://codeclimate.com/github/andreimaxim/huginn)
5
+ [![Dependency Status](https://gemnasium.com/andreimaxim/huginn.svg)](https://gemnasium.com/andreimaxim/huginn)
6
+
7
+ # Huginn
8
+
9
+ Huginn, which is Old Norse means "thought" and was one of Odin's ravens, is a
10
+ pure Ruby implementation of the MQTT client protocol version 3.1.1.
11
+
12
+ Its main goals are:
13
+
14
+ * high performance
15
+ * concurrency
16
+
17
+ The current version should considered pre-alpha and be
18
+
19
+ ## Development
20
+
21
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run
22
+ `bin/console` for an interactive prompt that will allow you to experiment.
23
+
24
+
25
+ ## Contributing
26
+
27
+ 1. Fork it ( https://github.com/andreimaxim/huginn/fork )
28
+ 2. Create your feature branch (git checkout -b my-new-feature)
29
+ 3. Commit your changes (git commit -am 'Add some feature')
30
+ 4. Push to the branch (git push origin my-new-feature)
31
+ 5. Create a new Pull Request
@@ -0,0 +1,6 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'huginn'
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require 'irb'
14
+ IRB.start
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,21 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDfDCCAmSgAwIBAgIBATANBgkqhkiG9w0BAQUFADBCMQ8wDQYDVQQDDAZhbmRy
3
+ ZWkxGzAZBgoJkiaJk/IsZAEZFgthbmRyZWltYXhpbTESMBAGCgmSJomT8ixkARkW
4
+ AnJvMB4XDTE2MDMwMTA2NTgyNFoXDTE3MDMwMTA2NTgyNFowQjEPMA0GA1UEAwwG
5
+ YW5kcmVpMRswGQYKCZImiZPyLGQBGRYLYW5kcmVpbWF4aW0xEjAQBgoJkiaJk/Is
6
+ ZAEZFgJybzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMKG4jiyuIkj
7
+ dKrb/FmDSZvCJ10A98JXZDSQZERIJtMactmcHfgYkXdpXfLH4gcbOyy9u3kh+uJx
8
+ Z4VcOKMtOJYH/gC1fQWDV4Y5J5B39+qRMQQWf+YbNdmBYRI5S4JmXxjmbbW1hzaT
9
+ hjl4omfcECpNQeF1xoIfD4xCd/8amNxV1LJenpAfGvxUt1RjbhBOCSw1GZ0HSZVG
10
+ n2MMGPaok6ko2TKF/aC7sI3VoCPfTGJeYmEJ6vSoM8fkm9Zf8KA57x/pZdTJLigk
11
+ OEjIidqFPOHqei2bTczc4st/9c//wEw16u/lIc1xMcyshR4Wupu+gLqZ0B4GOff7
12
+ gNz7ys6nNUkCAwEAAaN9MHswCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0O
13
+ BBYEFPkPDROvRN4YBVAUMbzaOEyxgnODMCAGA1UdEQQZMBeBFWFuZHJlaUBhbmRy
14
+ ZWltYXhpbS5ybzAgBgNVHRIEGTAXgRVhbmRyZWlAYW5kcmVpbWF4aW0ucm8wDQYJ
15
+ KoZIhvcNAQEFBQADggEBAHk/PaQhYVAjgPA51yJZcR2GK3xr8GrOtKULprQisvMS
16
+ 3LXdvtMqs18U08m9dWmzeB5ARKYTcm9lpaV6KhxoDjypZuOXX0u+vWYGEbgJhn3E
17
+ MJc3QCX7909iy6o9RpCRKtPzeHMdeqKB7a9E+EF5Znzo/y1yUagLkk+LJCvE8G6Z
18
+ rxYXd7bTvBpDLs8ns/HlgEckYxdYwXJPWLcNAI9p0rYTwF2kbs2ObxUEq/cuN1/9
19
+ IygC46GdwYXnTJC2bZP9ArhJM/y+J/RMRHnFcE7FTaYI+vR7MGgsQrBbcvblgmf1
20
+ CYTp6Bqdn1/GgGlPXiFwTVYLMpZnihZKdsDpQRSs8ak=
21
+ -----END CERTIFICATE-----
@@ -0,0 +1,35 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'huginn/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'huginn'
8
+ spec.version = Huginn::VERSION
9
+ spec.authors = ['Andrei Maxim']
10
+ spec.email = ['andrei@andreimaxim.ro']
11
+
12
+ spec.homepage = 'https://github.com/andreimaxim/huginn'
13
+ spec.license = 'MIT'
14
+ spec.summary = 'High-performance Ruby MQTT client'
15
+ spec.description = <<-EOF
16
+ Huginn (from Old Norse "thought") is a high-performance Ruby MQTT client
17
+ written using an actor-based model. Its main goal is high concurrency and
18
+ high performance.
19
+ EOF
20
+
21
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
22
+ spec.bindir = 'exe'
23
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
+ spec.require_paths = ['lib']
25
+
26
+ spec.cert_chain = ['certs/andreimaxim.pem']
27
+ spec.signing_key = File.expand_path('~/.ssh/gem-private_key.pem') if $0 =~ /gem\z/
28
+
29
+ spec.add_development_dependency 'bundler', '~> 1.11'
30
+ spec.add_development_dependency 'rake', '~> 11.1'
31
+ spec.add_development_dependency 'rspec', '~> 3.4'
32
+
33
+ spec.add_runtime_dependency 'celluloid', '~> 0.17'
34
+ spec.add_runtime_dependency 'hamster', '~> 3.0'
35
+ end
@@ -0,0 +1,8 @@
1
+ require 'celluloid/current'
2
+ require 'huginn/version'
3
+
4
+ module Huginn
5
+ # Nothing to do.
6
+ end
7
+
8
+ require 'huginn/client'
@@ -0,0 +1,17 @@
1
+ require 'huginn/internal/message'
2
+
3
+ module Huginn
4
+ class Client
5
+ include Celluloid
6
+
7
+ DEFAULT_HOST = 'tcp://localhost:1883'
8
+
9
+ def initialize(opts = {})
10
+ @server_uri = opts.fetch(:server_uri) { DEFAULT_HOST }
11
+ end
12
+
13
+ def send_message(topic, payload)
14
+ Internal::Message.new_link(topic, payload).deliver
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,56 @@
1
+ module Huginn
2
+ module Internal
3
+ # Exception class that acts as a wrapper over the MqttException Java
4
+ # counterpart.
5
+ class Exception < ::StandardError
6
+
7
+ DEFAULT_REASON_CODE = 0
8
+
9
+ REASON_CODE = {
10
+ # General errors
11
+ 0 => 'Client exception',
12
+ 1 => 'Invalid protocol version',
13
+ 2 => 'Invalid client ID',
14
+ 3 => 'Broken unavailable',
15
+ 4 => 'Failed authentication',
16
+ 5 => 'Not authorized',
17
+ 6 => 'Unexpected error',
18
+
19
+ # Subscription errors
20
+ 128 => 'Subscribe failed',
21
+
22
+ 32_000 => 'Client timeout',
23
+ 32_001 => 'No message IDs available',
24
+
25
+ # Connection errors
26
+ 32_100 => 'Client connected',
27
+ 32_101 => 'Client already disconnected',
28
+ 32_102 => 'Client disconnecting',
29
+ 32_103 => 'Server connect error',
30
+ 32_104 => 'Client not connected',
31
+ 32_105 => 'Socket factory mismatch',
32
+ 32_106 => 'SSL configuration error',
33
+ 32_107 => 'Client disconnect prohibited',
34
+ 32_108 => 'Invalid message',
35
+ 32_109 => 'Connection lost',
36
+ 32_110 => 'Connect in progress',
37
+ 32_111 => 'Client closed',
38
+
39
+ 32_201 => 'Token in use',
40
+ 32_202 => 'Maximum in flight messages'
41
+ }.freeze
42
+
43
+ def initialize(err)
44
+ @java_obj = err
45
+ set_backtrace(err.backtrace)
46
+
47
+ msg = err.getMessage
48
+ det = err.getCause
49
+
50
+ msg += " (#{det})" unless det.nil?
51
+
52
+ super msg
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,21 @@
1
+ module Huginn
2
+ module Internal
3
+ class Message
4
+ include Celluloid
5
+
6
+ attr_reader :topic
7
+ attr_reader :payload
8
+
9
+ def initialize(topic, payload)
10
+ @topic = topic
11
+ @payload = payload
12
+ end
13
+
14
+ def deliver
15
+ sleep 3
16
+
17
+ puts "[#{topic}] #{payload} //// delivered"
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,3 @@
1
+ module Huginn
2
+ VERSION = '0.0.1.alpha'.freeze
3
+ end
metadata ADDED
@@ -0,0 +1,157 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: huginn
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.alpha
5
+ platform: ruby
6
+ authors:
7
+ - Andrei Maxim
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDfDCCAmSgAwIBAgIBATANBgkqhkiG9w0BAQUFADBCMQ8wDQYDVQQDDAZhbmRy
14
+ ZWkxGzAZBgoJkiaJk/IsZAEZFgthbmRyZWltYXhpbTESMBAGCgmSJomT8ixkARkW
15
+ AnJvMB4XDTE2MDMwMTA2NTgyNFoXDTE3MDMwMTA2NTgyNFowQjEPMA0GA1UEAwwG
16
+ YW5kcmVpMRswGQYKCZImiZPyLGQBGRYLYW5kcmVpbWF4aW0xEjAQBgoJkiaJk/Is
17
+ ZAEZFgJybzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMKG4jiyuIkj
18
+ dKrb/FmDSZvCJ10A98JXZDSQZERIJtMactmcHfgYkXdpXfLH4gcbOyy9u3kh+uJx
19
+ Z4VcOKMtOJYH/gC1fQWDV4Y5J5B39+qRMQQWf+YbNdmBYRI5S4JmXxjmbbW1hzaT
20
+ hjl4omfcECpNQeF1xoIfD4xCd/8amNxV1LJenpAfGvxUt1RjbhBOCSw1GZ0HSZVG
21
+ n2MMGPaok6ko2TKF/aC7sI3VoCPfTGJeYmEJ6vSoM8fkm9Zf8KA57x/pZdTJLigk
22
+ OEjIidqFPOHqei2bTczc4st/9c//wEw16u/lIc1xMcyshR4Wupu+gLqZ0B4GOff7
23
+ gNz7ys6nNUkCAwEAAaN9MHswCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0O
24
+ BBYEFPkPDROvRN4YBVAUMbzaOEyxgnODMCAGA1UdEQQZMBeBFWFuZHJlaUBhbmRy
25
+ ZWltYXhpbS5ybzAgBgNVHRIEGTAXgRVhbmRyZWlAYW5kcmVpbWF4aW0ucm8wDQYJ
26
+ KoZIhvcNAQEFBQADggEBAHk/PaQhYVAjgPA51yJZcR2GK3xr8GrOtKULprQisvMS
27
+ 3LXdvtMqs18U08m9dWmzeB5ARKYTcm9lpaV6KhxoDjypZuOXX0u+vWYGEbgJhn3E
28
+ MJc3QCX7909iy6o9RpCRKtPzeHMdeqKB7a9E+EF5Znzo/y1yUagLkk+LJCvE8G6Z
29
+ rxYXd7bTvBpDLs8ns/HlgEckYxdYwXJPWLcNAI9p0rYTwF2kbs2ObxUEq/cuN1/9
30
+ IygC46GdwYXnTJC2bZP9ArhJM/y+J/RMRHnFcE7FTaYI+vR7MGgsQrBbcvblgmf1
31
+ CYTp6Bqdn1/GgGlPXiFwTVYLMpZnihZKdsDpQRSs8ak=
32
+ -----END CERTIFICATE-----
33
+ date: 2016-03-20 00:00:00.000000000 Z
34
+ dependencies:
35
+ - !ruby/object:Gem::Dependency
36
+ name: bundler
37
+ requirement: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '1.11'
42
+ type: :development
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '1.11'
49
+ - !ruby/object:Gem::Dependency
50
+ name: rake
51
+ requirement: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '11.1'
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '11.1'
63
+ - !ruby/object:Gem::Dependency
64
+ name: rspec
65
+ requirement: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '3.4'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '3.4'
77
+ - !ruby/object:Gem::Dependency
78
+ name: celluloid
79
+ requirement: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '0.17'
84
+ type: :runtime
85
+ prerelease: false
86
+ version_requirements: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '0.17'
91
+ - !ruby/object:Gem::Dependency
92
+ name: hamster
93
+ requirement: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '3.0'
98
+ type: :runtime
99
+ prerelease: false
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '3.0'
105
+ description: |2
106
+ Huginn (from Old Norse "thought") is a high-performance Ruby MQTT client
107
+ written using an actor-based model. Its main goal is high concurrency and
108
+ high performance.
109
+ email:
110
+ - andrei@andreimaxim.ro
111
+ executables: []
112
+ extensions: []
113
+ extra_rdoc_files: []
114
+ files:
115
+ - ".gitignore"
116
+ - ".rspec"
117
+ - ".travis.yml"
118
+ - ".yardopts"
119
+ - CODE_OF_CONDUCT.md
120
+ - Gemfile
121
+ - LICENSE.txt
122
+ - README.md
123
+ - Rakefile
124
+ - bin/console
125
+ - bin/setup
126
+ - certs/andreimaxim.pem
127
+ - huginn.gemspec
128
+ - lib/huginn.rb
129
+ - lib/huginn/client.rb
130
+ - lib/huginn/internal/exception.rb
131
+ - lib/huginn/internal/message.rb
132
+ - lib/huginn/version.rb
133
+ homepage: https://github.com/andreimaxim/huginn
134
+ licenses:
135
+ - MIT
136
+ metadata: {}
137
+ post_install_message:
138
+ rdoc_options: []
139
+ require_paths:
140
+ - lib
141
+ required_ruby_version: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ required_rubygems_version: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ">"
149
+ - !ruby/object:Gem::Version
150
+ version: 1.3.1
151
+ requirements: []
152
+ rubyforge_project:
153
+ rubygems_version: 2.4.5
154
+ signing_key:
155
+ specification_version: 4
156
+ summary: High-performance Ruby MQTT client
157
+ test_files: []
Binary file