Tuesday July 5, 2011

[Time] NameMessage
[00:00] reuben there are still some problems
[00:00] reuben but nothing major (I'm deploying it on the internet and haven't had any problems so far)
[00:04] tdignan nice, i'm doing it
[00:04] tdignan ok one more annoying q\
[00:04] tdignan I tried to build the examples from github, and it said "czmq not found", but i've got all the zmq packages in ubuntu's repos installed
[00:05] tdignan should I just build the git repo?
[00:07] reuben czmq is a C binding
[00:07] reuben it's on
[00:10] tdignan I thought the lib was native C?
[00:11] tdignan oh, C++
[00:11] tdignan my mistake.
[00:12] reuben yeah it's C++ with a C interface
[00:12] reuben czmq is a C binding
[00:12] reuben it's supposed to wrap the raw interface and help with forward compatibility
[00:13] reuben it makes it easier to port to 3.0/master/libzmq/whatever you call it, for example
[00:15] tdignan thanks man
[00:28] travlr tdignan, reuben: The program used to create the flowchart diagrams is called 'ditaa'
[01:24] tdignan travlr: awesome, they're nice charts
[01:24] tdignan that will be valuable
[06:50] dfszb What does it mean: Assertion failed: sessions.empty () (socket_base.cpp:133) ? I receive this when an XREP socket is destroyed
[06:51] sustrik dfszb: are you sure you are not using same socket from 2 threads in parallel?
[06:52] dfszb yes, pretty sure. the socket is used only from the thread that created it.
[06:53] sustrik ok, then it's a bug
[06:53] sustrik create a minimal test case to reproduce the problem
[06:53] sustrik and report it to the bug tracker
[06:56] dfszb ok, will do so (after checking again that it's from the same thread)
[06:56] sustrik great
[06:56] sustrik thanks
[08:07] turbojerry hi, I have a few questions if someone can help
[08:08] turbojerry 1st can I use 0MQ over the net? what about being attacked?
[08:11] turbojerry would 0MQ just fall over if fuzz attacked?
[08:11] th it is advised against using 0mq openly on the net
[08:12] th use openvpn/ipsec whatever to protect you
[08:12] turbojerry ok, I need to handle a large number of mainly idle connections, >100,000
[08:13] turbojerry all on one box hopefully, is this possible?
[08:14] th yes.
[08:14] ssi just be aware that they eat file descriptors
[08:14] turbojerry does it matter what OS I use?
[08:15] ssi doesn't it always? :D
[08:15] turbojerry I.e. is 0MQ any better on say NetBSD than say Linux?
[08:15] sustrik linux tends to be more optimised
[08:15] ssi 0MQ counts as networking, and NetBSD has Net right in the name!
[08:15] turbojerry lol, yes, I was meaning if there is a major difference
[08:16] sustrik netbsd would be better for security afaics
[08:16] turbojerry if the networking stack any faster?
[08:16] turbojerry is*
[08:17] sustrik presumably, there was a lot of optimisation efforts in linux kernel in recent years, but only way to tell is test it yourself
[08:17] sustrik in your particular setting
[08:18] turbojerry ok, thanks, I was hoping to avoid that!
[08:19] turbojerry where can I find info on using 0MQ and openvpn / ipsec and is there much difference between the performance?
[08:32] sustrik no idea
[08:34] turbojerry ok, well thanks anyway
[08:46] eintr SUBSCRIBE filters are always bounded by the first frame, right?
[08:57] sustrik yes
[12:02] tdignan  /quit
[12:54] jav I got a software which is able to receive several types of messages, some require replies, some don't. socket(REP) dosen't seem to be the right choice for me, what should I choose? (or should I use multiple sockets?)
[12:55] sustrik yes, use multiple sockets
[12:56] jav Thanks.
[12:56] jav I guess I'll do empty replies for now, and then clean it up.
[14:18] dev_sa dimelo xtreme pojo
[14:18] dev_sa dimelo volumen 7
[14:18] dev_sa dimelo xtreme pojo
[14:19] dev_sa sorry :( , i thought i was in another channel
[14:31] sustrik :)
[17:45] avidal Does anyone have an article detailing a workaround for dynamic port allocation (due to lack of ipc on windows) for tcp in zmq?
[17:51] avidal I guess I can just pick a stack of ports and cycle through them. Hopefully one of them is available!
[17:55] whack avidal: I think czmq has support for that, but otherwise you'll have to do the port selection yourself
[17:58] pieter_hintjens avidal: check how CZMQ does it, in the zsocket_bind () method
[17:58] avidal pieter_hintjens: i will, thanks
[17:58] pieter_hintjens there is a defined range of ports for "ephemeral" use
[17:58] avidal i hadn't even heard of czmq until just now
[17:58] pieter_hintjens
[17:58] avidal i didn't think the zeromq api was complicated enough to require a 'high level' C wrapper
[17:59] pieter_hintjens there are four (4!) different ways of representing messages in C
[17:59] pieter_hintjens strings, frames, whole messages, and zmq zero-copy messages
[18:04] reuben there are?
[18:04] avidal so it just tries all ports between ZSOCKET_DYNFROM and ZSOCKET_DYNTO and binds to the first one available?
[18:04] pieter_hintjens avidal: yes
[18:04] pieter_hintjens reuben: yes, at least in C all these make sense in different cases
[18:05] pieter_hintjens in other languages, I'd guess it's frames, entire messages, and (sometimes) zero-copy messages that make sense
[18:05] pieter_hintjens char *response = zstr_get (client_socket);
[18:05] pieter_hintjens etc.
[18:05] avidal pieter_hintjens: makes sense. I was thinking more along the lines of how to deal with binding to a dynamically allocated port on either end of the channel, and making sure the other end knows which port the first one connected to.
[18:06] pieter_hintjens avidal: the zsocket_bind() method returns the final port number, which you then send to the client via some other channel
[18:06] pieter_hintjens typical example is a three-part dialog between client, server, and broker
[18:07] pieter_hintjens server binds and registers some resource, client requests some resource, broker directs client to server (+ dynamic port)
[18:07] avidal I think I can just use a very simple workaround for my purposes. It'll be a very very simple application that only needs a small handful of sockets anyway
[18:12] reuben I've always used messages
[18:13] pieter_hintjens reuben: what language are you working in?
[18:15] reuben pieter_hintjens, C++, but using the C interface
[18:15] pieter_hintjens I'd look at the CZMQ api then
[18:15] pieter_hintjens at the least, being able to fetch an entire message (all frames) in one go is extremely useful