libcml 1.0

Sign up to get free protection for your applications and to get access to all the features.
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: []