libcml 1.0

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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/libcml.rb +94 -0
  3. metadata +58 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4ee0fad31cc402e29f085e63b279e9915ec582ff
4
+ data.tar.gz: 739b5cdc49dcd9407b29e01fe38e437c8572008f
5
+ SHA512:
6
+ metadata.gz: 9f8a4f7be445926bbf764638db6b40a3c4c4fc09ed36b03d6724d770ae0ee8bfbb6d556fdadad50ed6c63a5a8b0ce30fd2bc919e2823873a7b15c37d1d12f942
7
+ data.tar.gz: 414f1676b7163635223ed4878b8c0cf7720a3ddf2680564872c876276d54026f1e051a2edbf91855de02b77a6e780cf5037301a47cc9443d95c04cd838904007
data/lib/libcml.rb ADDED
@@ -0,0 +1,94 @@
1
+ #!/usr/bin/ruby2.2
2
+
3
+ require 'ffi-rzmq'
4
+ require 'pry'
5
+ require 'json'
6
+
7
+ class Cml
8
+
9
+ #@@m_id = nil
10
+ #@@m_context = nil
11
+ #@@m_socket = nil
12
+ #@@m_socket_type = nil
13
+
14
+ def show_val
15
+ @m_id
16
+ end
17
+ def initialize(myid, socket_type=ZMQ::DEALER)
18
+ @m_id = myid
19
+ @m_context = ZMQ::Context.new
20
+ @m_socket = @m_context.socket(socket_type)
21
+ @m_socket.setsockopt(ZMQ::IDENTITY, myid)
22
+ @m_socket_type = socket_type
23
+ end
24
+
25
+ def cml_connect(broker_ipc)
26
+ @m_socket.connect(broker_ipc)
27
+ end
28
+
29
+ def cml_ssl_connect(broker_ipc)
30
+ @m_socket.connect(broker_ipc)
31
+ end
32
+
33
+ def cml_ssh_connect(broker_ipc, username, ssh_ipaddr)
34
+ ZMQ.ssh.tunnel_connection(@m_socket, broker_ipc, username+"@"+ssh_ipaddr)
35
+ end
36
+
37
+ def cml_bind(bind_ipc)
38
+ @m_socket.bind(bind_ipc)
39
+ end
40
+
41
+ def cml_send(peerid, msg,encoding='text')
42
+ #nmsg = ZMQ::Message.new(msg)
43
+ #@m_socket.sendmsg(nmsg)
44
+ @fmt_msg = {'version' => '1', 'from' => @m_id, 'to'=> peerid, 'encoding' => encoding, 'data' => msg}
45
+ @json_msg = @fmt_msg.to_json
46
+ print @json_msg
47
+ if @m_socket_type == ZMQ::ROUTER
48
+ rc = @m_socket.send_strings [peerid,"",@json_msg]
49
+ elsif @m_socket_type == ZMQ::DEALER
50
+ rc = @m_socket.send_strings ["",peerid,"",@json_msg]
51
+ else
52
+ rc = @m_socket.send_strings ["",peerid,"",@json_msg]
53
+ end
54
+ end
55
+
56
+ def cml_recv(timeout=0)
57
+ if timeout == 0
58
+ @msg = @m_socket.recv_multipart()
59
+ @msg_len = @msg.length
60
+ return @msg[@msg_len - 1]
61
+ else
62
+ @poller = ZMQ::Poller()
63
+ @poller.register(@m_socket,ZMQ::POLLIN)
64
+ @sockets = dict(@poller.poll(timeout))
65
+ if @m_socket
66
+ @msg = @m_socket.recv_multipart()
67
+ puts @msg
68
+ @msg_len = @msg.length
69
+ return @msg[@msg_len - 1]
70
+ else
71
+ return False
72
+ end
73
+ end
74
+ end
75
+
76
+ def cml_broadcast(peerlist,msg,encoding="text")
77
+ for peer in peerlist
78
+ puts peer
79
+ cml_send(peer,msg,encoding)
80
+ end
81
+ end
82
+
83
+ def cml_disconnect()
84
+ @m_socket.close()
85
+ @m_context.term()
86
+ end
87
+
88
+ def myID()
89
+ return @m_id
90
+ end
91
+ end
92
+
93
+ #cml = Cml.new('my.svc')
94
+ #binding.pry
metadata ADDED
@@ -0,0 +1,58 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: libcml
3
+ version: !ruby/object:Gem::Version
4
+ version: '1.0'
5
+ platform: ruby
6
+ authors:
7
+ - Prashanth Chintalapudi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-01-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ffi-rzmq
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: CMl being a wrapper aroung zmq, binding for ruby.
28
+ email: prashanth@lavellenetworks.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/libcml.rb
34
+ homepage:
35
+ licenses:
36
+ - Lavelle Networks
37
+ metadata: {}
38
+ post_install_message:
39
+ rdoc_options: []
40
+ require_paths:
41
+ - lib
42
+ required_ruby_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ requirements: []
53
+ rubyforge_project:
54
+ rubygems_version: 2.4.5
55
+ signing_key:
56
+ specification_version: 4
57
+ summary: Common Messaging Layer
58
+ test_files: []