Class: CZTop::ZsockOptions::OptionsAccessor
- Inherits:
-
Object
- Object
- CZTop::ZsockOptions::OptionsAccessor
- Includes:
- CZMQ::FFI
- Defined in:
- lib/cztop/zsock_options.rb
Overview
Security Mechanisms collapse
- MECHANISMS =
supported security mechanisms and their macro value equivalent
{ 0 => :NULL, # ZMQ_NULL 1 => :PLAIN, # ZMQ_PLAIN 2 => :CURVE, # ZMQ_CURVE 3 => :GSSAPI # ZMQ_GSSAPI }
Instance Attribute Summary collapse
-
#zocket ⇒ Socket, Actor
readonly
Whose options this OptionsAccessor instance is accessing.
High Water Marks collapse
-
#rcvhwm ⇒ Integer
The receive high water mark.
- #rcvhwm=(value) ⇒ Object
-
#sndhwm ⇒ Integer
The send high water mark.
- #sndhwm=(value) ⇒ Object
Security Mechanisms collapse
-
#CURVE_key(key_name) ⇒ String?
private
Get one of the CURVE keys.
- #CURVE_publickey ⇒ String?
- #CURVE_secretkey ⇒ String?
-
#CURVE_server=(bool) ⇒ Object
Make this zocket a CURVE server.
-
#CURVE_server? ⇒ Boolean
Whether this zocket is a CURVE server.
- #CURVE_serverkey ⇒ String?
-
#CURVE_serverkey=(key) ⇒ Object
Sets the server’s public key, so the zocket can authenticate the remote server.
-
#mechanism ⇒ Symbol
The current security mechanism in use.
- #PLAIN_password ⇒ String?
- #PLAIN_password=(password) ⇒ Object
-
#PLAIN_server=(bool) ⇒ Object
Make this zocket a PLAIN server.
-
#PLAIN_server? ⇒ Boolean
Whether this zocket is a PLAIN server.
- #PLAIN_username ⇒ String?
- #PLAIN_username=(username) ⇒ Object
-
#zap_domain ⇒ String
Gets the ZAP domain used for authentication.
-
#zap_domain=(domain) ⇒ Object
Sets the ZAP domain used for authentication.
Send and Receive Timeouts collapse
-
#rcvtimeo ⇒ Integer
The timeout when receiving a message.
- #rcvtimeo=(timeout) ⇒ Object
-
#sndtimeo ⇒ Integer
The timeout when sending a message.
- #sndtimeo=(timeout) ⇒ Object
Instance Method Summary collapse
-
#[](option_name) ⇒ Object
Fuzzy option getter.
-
#[]=(option_name, new_value) ⇒ Object
Fuzzy option setter.
-
#events ⇒ Integer
Socket events (readable/writable).
-
#fd ⇒ Integer
Socket file descriptor.
-
#heartbeat_ivl ⇒ Integer
Current value of Heartbeat IVL.
- #heartbeat_ivl=(new_value) ⇒ Object
-
#heartbeat_timeout ⇒ Integer
Current value of Heartbeat Timeout.
- #heartbeat_timeout=(new_value) ⇒ Object
-
#heartbeat_ttl ⇒ Integer
Current value of Heartbeat TTL, in milliseconds.
- #heartbeat_ttl=(new_value) ⇒ Object
-
#identity ⇒ String
Current socket identity.
- #identity=(identity) ⇒ Object
-
#initialize(zocket) ⇒ OptionsAccessor
constructor
A new instance of OptionsAccessor.
-
#ipv6=(new_value) ⇒ Object
Set the IPv6 option for the socket.
-
#ipv6? ⇒ Boolean
Current value of ipv6.
-
#linger ⇒ Integer
Current value of LINGER.
-
#linger=(new_value) ⇒ Object
This defines the number of milliseconds to wait while closing/disconnecting a socket if there are outstanding messages to send.
-
#reconnect_ivl ⇒ Integer
Current value of RECONNECT_IVL.
-
#reconnect_ivl=(new_value) ⇒ Object
This defines the number of milliseconds to wait while closing/disconnecting a socket if there are outstanding messages to send.
-
#router_mandatory=(bool) ⇒ Object
Accept only routable messages on ROUTER sockets.
-
#tos ⇒ Integer
Current value of Type of Service.
- #tos=(new_value) ⇒ Object
Constructor Details
#initialize(zocket) ⇒ OptionsAccessor
Returns a new instance of OptionsAccessor.
46 47 48 |
# File 'lib/cztop/zsock_options.rb', line 46 def initialize(zocket) @zocket = zocket end |
Instance Attribute Details
#zocket ⇒ Socket, Actor (readonly)
Returns whose options this CZTop::ZsockOptions::OptionsAccessor instance is accessing.
43 44 45 |
# File 'lib/cztop/zsock_options.rb', line 43 def zocket @zocket end |
Instance Method Details
#[](option_name) ⇒ Object
Fuzzy option getter. This is to make it easier when porting applications from CZMQ libraries to CZTop.
54 55 56 57 58 59 60 |
# File 'lib/cztop/zsock_options.rb', line 54 def [](option_name) # NOTE: beware of predicates, especially #CURVE_server? & friends meth = public_methods.reject { |m| m =~ /=$/ } .find { |m| m =~ /^#{option_name}\??$/i } raise NoMethodError, option_name if meth.nil? __send__(meth) end |
#[]=(option_name, new_value) ⇒ Object
Fuzzy option setter. This is to make it easier when porting applications from CZMQ libraries to CZTop.
67 68 69 70 71 |
# File 'lib/cztop/zsock_options.rb', line 67 def []=(option_name, new_value) meth = public_methods.find { |m| m =~ /^#{option_name}=$/i } raise NoMethodError, option_name if meth.nil? __send__(meth, new_value) end |
#CURVE_key(key_name) ⇒ String? (private)
Get one of the CURVE keys.
110 111 112 113 114 115 |
# File 'lib/cztop/zsock_options.rb', line 110 def CURVE_key(key_name) return nil if mechanism != :CURVE ptr = Zsock.__send__(key_name, @zocket) return nil if ptr.null? ptr.read_string end |
#CURVE_publickey ⇒ String?
162 163 164 |
# File 'lib/cztop/zsock_options.rb', line 162 def CURVE_publickey CURVE_key(:curve_publickey) end |
#CURVE_secretkey ⇒ String?
155 156 157 |
# File 'lib/cztop/zsock_options.rb', line 155 def CURVE_secretkey CURVE_key(:curve_secretkey) end |
#CURVE_server=(bool) ⇒ Object
You’ll have to use a Authenticator.
Make this zocket a CURVE server.
96 97 98 |
# File 'lib/cztop/zsock_options.rb', line 96 def CURVE_server=(bool) Zsock.set_curve_server(@zocket, bool ? 1 : 0) end |
#CURVE_server? ⇒ Boolean
Returns whether this zocket is a CURVE server.
91 |
# File 'lib/cztop/zsock_options.rb', line 91 def CURVE_server?() Zsock.curve_server(@zocket) > 0 end |
#CURVE_serverkey ⇒ String?
103 104 105 |
# File 'lib/cztop/zsock_options.rb', line 103 def CURVE_serverkey CURVE_key(:curve_serverkey) end |
#CURVE_serverkey=(key) ⇒ Object
Sets the server’s public key, so the zocket can authenticate the remote server.
122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/cztop/zsock_options.rb', line 122 def CURVE_serverkey=(key) case key.bytesize when 40 Zsock.set_curve_serverkey(@zocket, key) when 32 ptr = ::FFI::MemoryPointer.from_string(key) Zsock.set_curve_serverkey_bin(@zocket, ptr) else raise ArgumentError, "invalid server key: %p" % key end end |
#events ⇒ Integer
Returns socket events (readable/writable).
320 |
# File 'lib/cztop/zsock_options.rb', line 320 def events() Zsock.events(@zocket) end |
#fd ⇒ Integer
Returns socket file descriptor.
316 |
# File 'lib/cztop/zsock_options.rb', line 316 def fd() Zsock.fd(@zocket) end |
#heartbeat_ivl ⇒ Integer
Returns current value of Heartbeat IVL.
258 |
# File 'lib/cztop/zsock_options.rb', line 258 def heartbeat_ivl() Zsock.heartbeat_ivl(@zocket) end |
#heartbeat_ivl=(new_value) ⇒ Object
260 261 262 263 |
# File 'lib/cztop/zsock_options.rb', line 260 def heartbeat_ivl=(new_value) raise ArgumentError, "invalid IVL" unless new_value >= 0 Zsock.set_heartbeat_ivl(@zocket, new_value) end |
#heartbeat_timeout ⇒ Integer
Returns current value of Heartbeat Timeout.
282 |
# File 'lib/cztop/zsock_options.rb', line 282 def heartbeat_timeout() Zsock.heartbeat_timeout(@zocket) end |
#heartbeat_timeout=(new_value) ⇒ Object
284 285 286 287 |
# File 'lib/cztop/zsock_options.rb', line 284 def heartbeat_timeout=(new_value) raise ArgumentError, "invalid timeout" unless new_value >= 0 Zsock.set_heartbeat_timeout(@zocket, new_value) end |
#heartbeat_ttl ⇒ Integer
Returns current value of Heartbeat TTL, in milliseconds.
266 |
# File 'lib/cztop/zsock_options.rb', line 266 def heartbeat_ttl() Zsock.heartbeat_ttl(@zocket) end |
#heartbeat_ttl=(new_value) ⇒ Object
The value will internally be rounded to the nearest decisecond. So a value of less than 100 will have no effect.
271 272 273 274 275 276 277 278 279 |
# File 'lib/cztop/zsock_options.rb', line 271 def heartbeat_ttl=(new_value) unless new_value.is_a? Integer raise ArgumentError, "invalid TTL: #{new_value}" end unless (0..65536).include? new_value raise ArgumentError, "TTL out of range: #{new_value}" end Zsock.set_heartbeat_ttl(@zocket, new_value) end |
#identity ⇒ String
Returns current socket identity.
239 |
# File 'lib/cztop/zsock_options.rb', line 239 def identity() Zsock.identity(@zocket).read_string end |
#identity=(identity) ⇒ Object
242 243 244 245 246 247 |
# File 'lib/cztop/zsock_options.rb', line 242 def identity=(identity) raise ArgumentError, "zero-length identity" if identity.bytesize.zero? raise ArgumentError, "identity too long" if identity.bytesize > 255 raise ArgumentError, "invalid identity" if identity.start_with? "\0" Zsock.set_identity(@zocket, identity) end |
#ipv6=(new_value) ⇒ Object
Set the IPv6 option for the socket. A value of true means IPv6 is enabled on the socket, while false means the socket will use only IPv4. When IPv6 is enabled the socket will connect to, or accept connections from, both IPv4 and IPv6 hosts. Default is false.
311 312 313 |
# File 'lib/cztop/zsock_options.rb', line 311 def ipv6=(new_value) Zsock.set_ipv6(@zocket, new_value ? 1 : 0) end |
#ipv6? ⇒ Boolean
Returns current value of ipv6.
304 |
# File 'lib/cztop/zsock_options.rb', line 304 def ipv6?() Zsock.ipv6(@zocket) != 0 end |
#linger ⇒ Integer
Returns current value of LINGER.
290 |
# File 'lib/cztop/zsock_options.rb', line 290 def linger() Zsock.linger(@zocket) end |
#linger=(new_value) ⇒ Object
This defines the number of milliseconds to wait while closing/disconnecting a socket if there are outstanding messages to send.
Default is 0, which means to not wait at all. -1 means to wait indefinitely
299 300 301 |
# File 'lib/cztop/zsock_options.rb', line 299 def linger=(new_value) Zsock.set_linger(@zocket, new_value) end |
#mechanism ⇒ Symbol
This is automatically set through the use of CURVE certificates, etc
Returns the current security mechanism in use.
145 146 147 148 149 150 |
# File 'lib/cztop/zsock_options.rb', line 145 def mechanism #int zsock_mechanism (void *self); code = Zsock.mechanism(@zocket) MECHANISMS[code] or raise "unknown ZMQ security mechanism code: %i" % code end |
#PLAIN_password ⇒ String?
202 203 204 205 |
# File 'lib/cztop/zsock_options.rb', line 202 def PLAIN_password return nil if mechanism != :PLAIN Zsock.plain_password(@zocket).read_string end |
#PLAIN_password=(password) ⇒ Object
207 208 209 |
# File 'lib/cztop/zsock_options.rb', line 207 def PLAIN_password=(password) Zsock.set_plain_password(@zocket, password) end |
#PLAIN_server=(bool) ⇒ Object
You’ll have to use a Authenticator.
Make this zocket a PLAIN server.
185 186 187 |
# File 'lib/cztop/zsock_options.rb', line 185 def PLAIN_server=(bool) Zsock.set_plain_server(@zocket, bool ? 1 : 0) end |
#PLAIN_server? ⇒ Boolean
Returns whether this zocket is a PLAIN server.
180 |
# File 'lib/cztop/zsock_options.rb', line 180 def PLAIN_server?() Zsock.plain_server(@zocket) > 0 end |
#PLAIN_username ⇒ String?
191 192 193 194 |
# File 'lib/cztop/zsock_options.rb', line 191 def PLAIN_username return nil if mechanism != :PLAIN Zsock.plain_username(@zocket).read_string end |
#PLAIN_username=(username) ⇒ Object
You’ll have to use a Authenticator.
197 198 199 |
# File 'lib/cztop/zsock_options.rb', line 197 def PLAIN_username=(username) Zsock.set_plain_username(@zocket, username) end |
#rcvhwm ⇒ Integer
Returns the receive high water mark.
82 |
# File 'lib/cztop/zsock_options.rb', line 82 def rcvhwm() Zsock.rcvhwm(@zocket) end |
#rcvhwm=(value) ⇒ Object
84 |
# File 'lib/cztop/zsock_options.rb', line 84 def rcvhwm=(value) Zsock.set_rcvhwm(@zocket, value) end |
#rcvtimeo ⇒ Integer
Returns the timeout when receiving a message.
217 |
# File 'lib/cztop/zsock_options.rb', line 217 def rcvtimeo() Zsock.rcvtimeo(@zocket) end |
#rcvtimeo=(timeout) ⇒ Object
220 |
# File 'lib/cztop/zsock_options.rb', line 220 def rcvtimeo=(timeout) Zsock.set_rcvtimeo(@zocket, timeout) end |
#reconnect_ivl ⇒ Integer
Returns current value of RECONNECT_IVL.
323 |
# File 'lib/cztop/zsock_options.rb', line 323 def reconnect_ivl() Zsock.reconnect_ivl(@zocket) end |
#reconnect_ivl=(new_value) ⇒ Object
This defines the number of milliseconds to wait while closing/disconnecting a socket if there are outstanding messages to send.
Default is 0, which means to not wait at all. -1 means to wait indefinitely
332 333 334 |
# File 'lib/cztop/zsock_options.rb', line 332 def reconnect_ivl=(new_value) Zsock.set_reconnect_ivl(@zocket, new_value) end |
#router_mandatory=(bool) ⇒ Object
Accept only routable messages on ROUTER sockets. Default is off.
234 235 236 |
# File 'lib/cztop/zsock_options.rb', line 234 def router_mandatory=(bool) Zsock.set_router_mandatory(@zocket, bool ? 1 : 0) end |
#sndhwm ⇒ Integer
Returns the send high water mark.
78 |
# File 'lib/cztop/zsock_options.rb', line 78 def sndhwm() Zsock.sndhwm(@zocket) end |
#sndhwm=(value) ⇒ Object
80 |
# File 'lib/cztop/zsock_options.rb', line 80 def sndhwm=(value) Zsock.set_sndhwm(@zocket, value) end |
#sndtimeo ⇒ Integer
Returns the timeout when sending a message.
224 |
# File 'lib/cztop/zsock_options.rb', line 224 def sndtimeo() Zsock.sndtimeo(@zocket) end |
#sndtimeo=(timeout) ⇒ Object
227 |
# File 'lib/cztop/zsock_options.rb', line 227 def sndtimeo=(timeout) Zsock.set_sndtimeo(@zocket, timeout) end |
#tos ⇒ Integer
Returns current value of Type of Service.
250 |
# File 'lib/cztop/zsock_options.rb', line 250 def tos() Zsock.tos(@zocket) end |
#tos=(new_value) ⇒ Object
252 253 254 255 |
# File 'lib/cztop/zsock_options.rb', line 252 def tos=(new_value) raise ArgumentError, "invalid TOS" unless new_value >= 0 Zsock.set_tos(@zocket, new_value) end |
#zap_domain ⇒ String
Gets the ZAP domain used for authentication.
169 170 171 |
# File 'lib/cztop/zsock_options.rb', line 169 def zap_domain Zsock.zap_domain(@zocket).read_string end |
#zap_domain=(domain) ⇒ Object
Sets the ZAP domain used for authentication.
174 175 176 177 |
# File 'lib/cztop/zsock_options.rb', line 174 def zap_domain=(domain) raise ArgumentError, "domain too long" if domain.bytesize > 254 Zsock.set_zap_domain(@zocket, domain) end |