Thursday October 28, 2010

[Time] NameMessage
[00:35] travlr sustrik: hi martin. regarding "real" file descriptor transparency in a zmq socket.. i thought that was a "done deal" to be implemented in v2.1.0.. i guess i missed the discussion about this feature now not being viable. :( ... zmq_poll() from now on then, i guess. thanks.
[00:40] travlr or wait, are you guys instead referring to accessing a zmq socket's FD. ahh, maybe that's it. in that case... :)
[00:41] starkdg travlr: i was just mentioning in general, its interoperability.
[00:42] starkdg i guess, martin says its not going to happen.
[00:47] travlr hi starkdg, well there is "interoperability" now by using zmq_poll(). but i was under the impression that zmq_socket was going to be able to accept a "real" socket descriptor as an argument, and that was already in git master (soon to be v2.1).
[00:48] travlr i've been waiting for this
[00:48] starkdg yeah, martin said there's no way to simulate these fd's in user land
[00:49] travlr well yes i read him saying that, but this is the first i've heard of it
[00:54] starkdg travlr, how do you use zeromq ?
[00:57] travlr i'm working a distributed, streamed processing system
[00:57] starkdg processsing of what ?
[00:58] travlr
[00:59] starkdg ProDataLab will eat extremely large data sets for breakfast.. and with a user interface so easy to use, a four year-old can run the world.
[00:59] starkdg that's a good line, i like that
[00:59] travlr :)
[01:03] starkdg i see. not alot on there right now.
[01:03] starkdg interesting project. just not alot on there.
[01:03] travlr no just a description for now, i've been busy with other things unfortunately
[01:03] starkdg i'm working on an audio content indexing system. using zmq .
[01:03] travlr cool, that was my next question
[01:04] travlr what platform?
[01:04] starkdg ive got it all implemented now, just trying to find out what to do with it.
[01:04] starkdg its on linux, or unix
[01:04] travlr ;)
[01:04] travlr what do you mean "what to do with it"
[01:05] starkdg I figure i can port parts to windows as needed, and if there's demand for it .
[01:05] starkdg just have to get some feedback on it
[01:05] starkdg and decide what license to release it under
[01:05] travlr ah i see. open source or propietory?
[01:05] starkdg yeah, but i'm leaning to open
[01:06] travlr yeah me too on my proj
[01:06] starkdg closed would be nice, but i'm seeing the obstacles of doing it htat way .
[01:06] starkdg one thing, you close out the community and a source of feedback
[01:06] travlr if you have something good there are pros and cons for each route.
[01:06] travlr and remember that you...
[01:07] travlr probably like me have benefitted greatly from the os community.
[01:07] travlr so give back
[01:07] starkdg yeah, true.
[01:07] travlr yup :)
[01:08] starkdg i'd like to make some money on it, expectations arent alot , but at least something.
[01:08] travlr yeah, that's a delimma
[01:08] starkdg but if i release the base functionality, which is what i have, i can always make extra through providing support and additional features as requested
[01:09] travlr yes there different os business models to choose from
[01:09] travlr lots of $ has been made via os licenses
[01:09] travlr just good planning, me thinks
[01:10] starkdg yeah
[01:10] starkdg and if its popular you get recognition and notoriety, at least, which counts for something.
[01:10] travlr right. if you are a coder, sell your ability as a service... great advertisement
[01:10] starkdg and there's always the groupies .
[01:10] travlr groupies... :D
[01:11] starkdg if you give me your email address, i have a pdf of my project, if you are interested .
[01:12] starkdg larrytheliquid ??? interesting.
[01:13] travlr sure. send it to prodatalab at gmail dot com... i'll take a look
[01:13] travlr what language
[01:14] starkdg its all in straight c
[01:14] starkdg just sent it now
[01:14] travlr k
[01:14] starkdg that gives a general outline, and some test results i've obtained
[01:15] starkdg i've had good success with it so far,
[01:16] starkdg ive indexexed around 1200 audio files into it, and tried to recall 250 clips of those files and all have matches. The clips were 30 to 60 second clips of the original , stored in ogg format at 50%compression.
[01:16] starkdg the indexe files were all in mp3's
[01:17] starkdg I also tried podcasts from talk shows, and its worked for that too.
[01:18] travlr well this is interesting. obviouly indexing interests me and audio pcm interests me too. so i'll give it a thorough read.
[01:18] starkdg yeah, let me know if you are interested in testing it out.
[01:19] travlr biggest problem i have starkdg is time, which is never on my side :(
[01:19] starkdg the dependencies are pretty low in number, just zeromq, libsndfile , libsamplerate, libmpg123
[01:19] starkdg yeah, i understand,
[01:20] travlr i like the pdf's presentation... very nice... important, imo
[01:20] starkdg but any feedback is appreciated, you dont have to code a thing, i just need opinions .
[01:20] travlr ok, let me see
[01:20] starkdg oh, thanks you, glad to see you noticed.
[01:21] travlr you should start a website for it
[01:21] starkdg yeah, we do have one, though i havent put anything up yet
[01:21] starkdg is the site , but its got other stuff on there now
[01:21] travlr phash... kinda like phish
[01:21] travlr :)
[01:22] starkdg its got another opensource library that we developed on it, this thing is new , we'll be putting it up there soon, just want to get limited exposure to people first .
[01:22] travlr cool
[01:23] starkdg the system seems to have a pretty small memory footprint, not a big code base, but its very scaleable, its limited in features but i think it does those features well.
[01:24] travlr i'm enjoying the read.. interesting
[01:26] travlr see for what i'm building, audioscout would be one of it's many pluggable components.. per se
[01:26] starkdg yeah, that's one thing i didnt understand on that website, just not sure of its applications, kidn of fuzzy on that
[01:27] starkdg i mean, i can see its a way of manageing a flow of information , in a distributed way,
[01:27] travlr everything that uses data for any purpose can be adapted to plug in.
[01:28] starkdg oh i see
[01:28] travlr i'm going to be moving to a new web host soon and will be explaining more when i do
[01:28] travlr i
[01:28] travlr i'm going to create a community around it, i think at this point
[01:29] starkdg who else is working on it ?
[01:29] starkdg just you ? or do you have anyone else ?
[01:29] travlr no one yet, just me
[01:29] travlr originally conceptualized for financial tick data....
[01:29] travlr then i realized it's good for any kind of data for any purpose
[01:30] starkdg like streaming video or audio ?
[01:30] travlr sure. you bet
[01:30] travlr i'm going to be starting the community soon
[01:31] starkdg how bout a plugin that can monitor a stream and send a message when a certain show or song comes on ?
[01:31] travlr anything you want. honestly its going to be beautiful
[01:31] starkdg or monitor a stream for known content and report copyright issues ?
[01:31] travlr anything you want
[01:32] travlr make a component and plug it in
[01:32] starkdg interesting, i'll bookmark the site , and look back in , and see what else is on there
[01:32] travlr i'll be always be around here so you can reach me
[01:33] starkdg sure
[01:33] travlr you've gone to great lengths in the pdf... very nice
[01:33] travlr well thought out
[01:33] starkdg yeah, took me the summer to do it
[01:34] starkdg not the pdf, but the whole project
[01:34] starkdg travlr: what country are you in?
[01:35] travlr florida, usa
[01:35] starkdg oh, i'm in ct, usa
[01:35] starkdg EDT time zone
[01:35] travlr i'm origininally from jerseyy
[01:35] travlr i flipped my car long end over long end in conn
[01:35] starkdg my father's down in florida, he's in the panhandle
[01:36] starkdg how'd you do that , that's quite a feet
[01:36] travlr im on the west coast
[01:36] travlr some punk hit me in the rear doing over 100mph
[01:37] travlr rolled 8 times
[01:37] travlr one end over end
[01:37] starkdg that's alot of energy, going 100
[01:37] travlr i saw him coming..."this guy's gonna hit me", i said
[01:38] starkdg hope you were wearing a seat belt
[01:38] travlr no doubt, wouldn't be here otherwise. i used to curse that seat belt out all the time, then it saved my life.
[01:38] travlr lol
[01:39] travlr well starkdg, gotta go back to work.. later
[01:39] starkdg ok, later
[01:39] starkdg thaks
[01:39] travlr yup
[06:45] CIA-17 zeromq2: 03Burak Arslan 07master * r3eb935e 10/ include/zmq.hpp :
[06:45] CIA-17 zeromq2: switch to c++-specific headers
[06:45] CIA-17 zeromq2: Signed-off-by: Burak Arslan <> -
[06:45] CIA-17 zeromq2: 03Martin Sustrik 07master * rdace247 10/ AUTHORS :
[06:45] CIA-17 zeromq2: Burak Arslan added to the AUTHORS file
[06:45] CIA-17 zeromq2: Signed-off-by: Martin Sustrik <> -
[07:53] lestrrat man, coming back to zmq for the first time in a few weeks, and I'm getting hit with so many errors... need to catch up
[07:55] sustrik good luck :)
[07:56] lestrrat did something change with inproc sockets?
[07:58] sustrik no
[07:58] sustrik what happens?
[07:58] lestrrat Invalid argument (mutex.hpp:97)
[07:58] lestrrat seems to happen every time my tests call bind(inproc)
[07:59] sustrik strange
[07:59] sustrik what OS are you on?
[07:59] lestrrat zmq::mutex_t::lock(). odd
[07:59] lestrrat OS X 10.6
[08:00] sustrik either the mutex object is bogus or it's some strange OSX behaviour
[08:00] sustrik presumably the former
[08:00] sustrik can you get a stack trace?
[08:01] lestrrat hold on, I'm syncing to latest master
[08:01] lestrrat k :)
[08:01] sustrik will be back later on today
[08:01] lestrrat I'll dig around a bit
[08:01] sustrik thanks!
[08:03] tbaz hello
[08:04] tbaz does zmq work on openVMS?
[08:05] tbaz no one here?
[08:21] lestrrat mikko: hopefully I pushed the right commits to make the perl binding pass
[09:22] mikko lestrrat: i can kick off manual build
[09:23] mikko lestrrat:
[09:23] lestrrat whoa
[09:24] mikko let me make clean
[09:25] mikko make: *** No targets specified and no makefile found. Stop.
[09:25] mikko make clean is actually make distclean?
[09:25] lestrrat you have to run perl Makefile.PL
[09:25] lestrrat make clean removes Makefile
[09:25] mikko lestrrat: yeah, isn't that usually distclean?
[09:26] mikko yeop
[09:26] mikko still failing
[09:26] lestrrat I think you have a threaded perl. I haven't checked with threads
[09:26] lestrrat will take a look.
[09:27] mikko This is perl, v5.10.1 (*) built for i486-linux-gnu-thread-multi
[09:27] lestrrat yep
[10:53] sustrik pieterh: you here?
[10:54] sustrik pieter_hintjens: ping
[10:59] pieterh sustrik: hi
[11:00] pieterh pong
[11:00] sustrik hi, i've copied the template to intro:_template
[11:00] pieterh ack
[11:00] pieterh i've stripped down nav:side
[11:01] sustrik the admin|templates claims there are no templates though
[11:01] sustrik same on .org and .com
[11:01] pieterh ah
[11:01] pieterh templates != templates
[11:01] pieterh wikidot overloads the concept
[11:01] sustrik i see :)
[11:01] sustrik so where should i look?
[11:01] pieterh just creating a _template page is sufficient
[11:01] pieterh then every page in that category uses the template automatically
[11:01] pieterh it's a layout (dynamic) template
[11:01] sustrik ok, but the layout is still different at .com and .org
[11:02] pieterh the admin templates are an older concept for static (default content) template
[11:02] pieterh ok, so what's the new start page, intro:start?
[11:02] sustrik
[11:02] pieterh lemme see...
[11:03] pieterh looks pretty good...
[11:03] pieterh what is the difference?
[11:03] pieterh ok, a little white space, i'll fix that...
[11:04] sustrik the page stretches to the right side of the browser window
[11:04] sustrik rather than having fixed width
[11:05] pieterh ok, doesn't show on my laptop screen but i'll see what's going on
[11:06] sustrik .com is ok
[11:06] pieterh what page stretches?
[11:06] pieterh the intro:start page looks fine to me
[11:06] sustrik intro:start
[11:06] pieterh try Ctrl+R
[11:06] pieterh you're probably using old cached CSS
[11:06] sustrik :)
[11:06] sustrik works!
[11:07] sustrik thanks
[11:07] pieterh that's why they pay me the big $$$
[11:07] pieterh there's still a small difference that I'll fix
[11:07] sustrik ok, i'll copy the other pages from .com in the meantime
[11:07] pieterh note that they are in page: there, I'd put them into intro:
[11:08] sustrik ok
[11:10] pieterh what do you think of using the nav:side content for the community page then?
[11:10] pieterh it's basically an index of all the content
[11:12] sustrik basically yes, let's do it in gradual steps
[11:13] sustrik first, let's do the newbie stuff and make 100% sure it works as expected
[11:15] keffo eeek, my laptop drive just made a boinkey-doink gurgle!
[11:18] pieterh keffo: eeek... usb disk caddy comes in handy to backup laptop HDDs
[11:18] pieterh sustrik: ack
[11:34] keffo hd's suck :/
[11:34] keffo imo, smart should say something?
[11:35] mikko get an ssd
[11:35] mikko it doesnt make a sound when it breaks
[11:35] mikko :)
[11:36] pieterh mikko: lol, what do you call a SSD drive that makes a boinkey-doink gurgle sound?
[11:36] pieterh answer: a very happy little SSD drive
[11:37] pieterh sustrik: I've set-up the five links on the start page
[11:37] pieterh so it's one click to getting help, one click to exploring the community, one click to support
[11:41] sustrik pieterh: i'll have a look, let me first finish the migration
[11:42] pieterh ok, NB the third page is done already
[11:43] sustrik ok, it looks done now
[11:44] sustrik can you double check that all links work on the newbie pages?
[11:46] sustrik pieterh: the font on the start page is smaller
[11:46] sustrik did you do that?
[11:46] sustrik it's unreadable
[11:46] sustrik the font size used at .com is ok
[11:54] travlr sustrik: hi martin. i saw your response to starkdg from yesterday about standard socket interoperability. could you please see my follow up question above. i'm a little confused about it. thanks
[11:56] sustrik pieterh: reverted
[11:56] sustrik trvlr: i don't have the log of the conversation
[11:56] sustrik can you paste your question again?
[11:57] travlr sure
[11:57] travlr regarding "real" file descriptor transparency in a zmq socket.. i thought that was a "done deal" to be implemented in v2.1.0.. i guess i missed the discussion about this feature now not being viable. :( ... zmq_poll() from now on then, i guess. thanks.
[11:58] sustrik travlr: you can get an fd from 0MQ socket
[11:58] sustrik however, its semantics are kind of different from what you would expect
[11:59] sustrik you can poll only for POLLIN
[11:59] travlr but to use a predefined standard socket, we are going to have to use zmq_poll functionality?
[11:59] sustrik if the poll is successfull it means only "something have happened with the socket"
[11:59] travlr i thought this was to be soon transparent
[11:59] sustrik you then have to check whether socket is readable/writeable
[12:00] sustrik i don't understand you question
[12:00] sustrik for standard sockets you don't need 0mq at all
[12:01] sustrik standard socket = TCP socket or such, right?
[12:01] travlr but to map a standard socket to a zmq socket we have to use zmq_poll. i thought that was going to be done differently in the future... more transparent
[12:02] travlr standard socket = TCP socket or such.... right
[12:02] sustrik map standard socket to 0mq socket?
[12:02] sustrik what's that?
[12:02] travlr i'm sorry i'm not being to clear :P
[12:02] sustrik what's the functionality you would like to see?
[12:02] sustrik :)
[12:03] travlr to incorporate a standard bsd socket to a zmq system, we have to use zmq_poll()
[12:03] sustrik and you would like to use poll, right?
[12:04] travlr i was hoping that zmq magic would just let us create a zmq_socket by providing a bsd socket FD to the zmq_socket call
[12:04] sustrik what would that be good for?
[12:05] travlr transparent interoperability
[12:05] travlr no zmq_poll to mess with
[12:05] sustrik so what you want is to use poll with both 0mq and BSD sockets, right?
[12:07] travlr i guess is what i mean is that you could provide a normal socket to the zmq_system with out copying the blob into zmq
[12:07] pieterh sustrik: re
[12:08] travlr eliminating the need inside a zmq_poll control section
[12:08] sustrik travlr: blob?
[12:08] travlr data
[12:08] sustrik why do you need socket if you don't want to send any data to it
[12:09] pieterh sustrik: I wanted to get the page to fit on a 1024x800 screen
[12:09] pieterh not a big deal
[12:09] sustrik travlr: try to express your question and ask on the mailing list
[12:09] sustrik pieterh: it was invisible on my box
[12:09] travlr i want to be able to transparently use a standard bsd socket on the edge of the zmq system
[12:09] sustrik almost invisible
[12:09] travlr ok, sorry for the confusion
[12:09] pieterh ack, this is what the Edit button is for :-)
[12:10] pieterh travlr: you're making a bridge?
[12:10] travlr hi pieterh, yes
[12:10] pieterh straight-forward enough
[12:10] pieterh use one thread
[12:10] travlr yes, i was hoping for magic, no zmq_poll needed
[12:10] pieterh inproc: to the rest of your 0MQ app
[12:11] pieterh and TCP to the outside world
[12:11] travlr with zmq_poll though
[12:11] pieterh yes, you can poll on TCP sockets as well as 0MQ sockets
[12:11] travlr i thought this was going to be transparent in the future
[12:11] keffo lovely, except inproc doesnt exist on windows!
[12:11] pieterh in the Future
[12:11] pieterh keffo: hmm, indeed, but does anyone do real work on Windows?
[12:12] travlr v2.1?
[12:12] pieterh travlr: ... 5.0 or something
[12:12] travlr oh, lol.. not!
[12:12] keffo pieterh, yes, far more than any other platform :)
[12:12] travlr :)
[12:12] pieterh travlr: at some point 0MQ will we hope get integrated with standard sockets
[12:12] pieterh that's way way off
[12:12] travlr ok, thanks
[12:13] pieterh keffo: curious fact, very few contributors from the win32 community
[12:13] pieterh 0MQ kind of reflects its user base
[12:14] pieterh it could be fun to simulate inproc: using ipc: just on win32 so that apps are portable
[12:14] keffo indeed, but "does anyone do real work on windows" does not :)
[12:14] pieterh keffo: i was trolling... :-)
[12:15] keffo I know, but inproc would be very valuable nonetheless :)
[12:15] pieterh i'm surprised no-one has provided the patch
[12:15] pieterh it can't be so hard, win32 has several ways to do this afaik
[12:15] keffo yeah
[12:15] keffo named pipe wrapper should be enough
[12:16] pieterh but it's been years since I had the luxury of the quasi-religious world of win32 APIs
[12:16] pieterh yup
[12:16] pieterh it takes so much time to learn and use properly and then it all changes, pow!
[12:16] keffo that's a good thing, usually :)
[12:17] keffo I'd hate to regurgitate the same old junk.. you'll end up with opengl then
[12:18] pieterh well, if it's not junk in the first place, it can survive a long long time
[12:18] mikko hmm
[12:18] mikko pyzmq master build succeeded
[12:18] travlr like *nix api
[12:18] travlr :)
[12:19] travlr no flaming allowed.. i'm gone
[12:19] pieterh travlr: did you get an answer to your socket question?
[12:19] travlr yes, thank you very much
[12:19] pieterh ok, np
[12:56] pieterh we've made some website changes
[12:56] pieterh if anyone wants to take a look and comment, that'd be cool
[13:05] travlr pieterh: simplified. i like it. btw, i looked at the guide again recently and think you've done a great job with it.
[13:06] BooTheHamster Hi. Can I use ZMQ_REQ socket on server (make bind) to send data to many clients with ZMQ_REP sockets (make connect)?
[13:08] travlr BooTheHamster: sure that's a the "device" model. see the guide
[13:11] BooTheHamster travlr: thanks
[14:42] pieterh travlr, thanks
[15:04] ptrb pieterh: I never understood the zeromq.[com,org] dichotomy; it's really great that they're the same, now.
[15:07] ptrb and I hope I spelled dichotomy correctly :)
[15:07] cremes ptrb: that is correct
[15:08] keffo not correctly used though
[15:08] ptrb fuck!!
[15:08] keffo the com/org are not mutually exclusive
[15:09] ptrb well now they're ostensibly identical, so it's all gravy
[15:09] ptrb and I _know_ I spelled and used "ostensibly" correctly
[15:14] keffo or ostensively? :)
[15:15] keffo ah damn, they're the same thing, but ostensibly predates ostensively by 17 years :)
[15:31] sustrik tbas: for openvms try speaking to john apps or brett cameron
[15:32] sustrik tbaz:
[15:38] mato sustrik: question:
[15:38] sustrik yes?
[15:38] mato sustrik: who (if anyone) processes commands on a socket that has been closed?
[15:38] mato sustrik: i.e. if i close a socket with ~160 clients on it, and they then also start disconnecting, who processes those commands?
[15:38] sustrik good question
[15:38] mato :-)
[15:39] sustrik it's so called "admin thread"
[15:39] sustrik which is not a real OS thread
[15:39] mato uh-oh...
[15:39] mato i sense a problem here :-)
[15:39] sustrik so
[15:39] sustrik the admin thread role can be taken by any other thread
[15:40] sustrik application thread i mean
[15:40] mato um, how exactly?
[15:40] sustrik but it's done only on certain occassions:
[15:40] sustrik 1. zmq_socket
[15:40] sustrik 2. zmq_close
[15:40] sustrik 3. zmq_term
[15:41] mato well, i have a problem here...
[15:41] mato since after i close sockets i get the signaler asserting on me
[15:41] mato (with lots of worker nodes)
[15:41] sustrik right
[15:42] sustrik you don't do any of the 3 actions above afterwards?
[15:42] mato well, i close 2 sockets
[15:43] mato after that i'm starting a new session, setting up new sockets
[15:43] sustrik the cleanup should happen then
[15:43] sustrik however, the signaler overflows in the meantime
[15:43] mato yes, but what if "enough" of the cleanup doesn't happen?
[15:43] mato yeah, that's what it looks like
[15:43] mato it still doesn't make entirely enough sense though
[15:43] sustrik each of this calls processes all the commands that are avialable at the moment
[15:44] sustrik but if the load of commands happens between the two calls
[15:44] mato right, but there is a delay between my closing sockets, doing other stuff and setting up new sockets
[15:44] mato but the "load of commands" still seems excessive
[15:44] sustrik right
[15:44] mato the signaler buffer is 120000 bytes by default
[15:45] sustrik how many connections are being closed at the moment?
[15:45] mato actually, it does make sense
[15:45] mato 120000 bytes == 2500 commands
[15:45] mato 80 workers = 160 connections
[15:45] mato so max 15 commands per socket
[15:45] mato then it will overflow
[15:46] sustrik 15 seems quite a lot
[15:46] mato it does, but not inconcievable
[15:46] sustrik hm
[15:46] sustrik i'll have to look at unlimited signalers
[15:47] mato that's one thing
[15:47] sustrik also, maybe the I/O threads can take the role of admin thread ocassionally
[15:47] mato the other question is -- shouldn't zombie sockets be handed off to some proper thread
[15:47] mato exactly
[15:47] mato once the application says close() you don't expect it to care about those sockets
[15:47] sustrik but which one?
[15:47] sustrik hmmm
[15:47] mato or make an extra admin thread...
[15:47] mato "reaper"
[15:48] sustrik :)
[15:48] sustrik let's first do the unlimited signaler
[15:48] sustrik that's easier
[15:48] mato ok, how much work is that do you think?
[15:49] mato because i can keep adding random extra polls in various places, but it's still not going to be stable :-(
[15:49] mato plus it slows things down in the wrong places
[15:49] ptrb Quick question: if I'm blocked in a zmq_read() in one thread, can I do anything to the context and/or socket in another thread to break that read? inject empty data maybe?
[15:49] mato ptrb: zmq_term() should break out of that read with ETERM
[15:50] ptrb which kills the whole context, correct?
[15:50] mato yup
[15:50] sustrik yes
[15:50] sustrik you can send an empty message, sure
[15:51] mato sustrik: ok, so about the signaler, will you look into it? or shall i? i think there's no point it putting off the change
[15:51] mato especially now that i have this problem with it overflowing on close...
[15:51] mato which i have no easy way of countering on the application side
[15:51] ptrb mato: and will zmq_term take also a zmq::context_t*?
[15:52] mato ptrb: hmm, yes, of course
[15:52] sustrik i'll have a look, you'll check that it doesn't kill the performance
[15:52] sustrik ok?
[15:52] mato hmm, ok, i'll see what i can do...
[15:53] mato sustrik: is the signaler on the critical path in the sense that it's involved if an app is stuck in e.g. read()
[15:53] mato sustrik: or not?
[15:53] sustrik ptrb: i don't think zmq::context_t allows accessing the underlying void*
[15:53] sustrik you have to destroy the context_t to invoke zmq_term
[15:53] sustrik mato: definitely
[15:54] sustrik it's not on critical critical path
[15:54] sustrik meaning that when messages are flowing continuously it's not involved
[15:54] mato right
[15:54] sustrik however, once there's a hickup, the reader stucks
[15:54] mato but if they're not then it might create problems with latency
[15:54] mato ja
[15:54] sustrik and command is required to wake it up
[15:54] sustrik right
[15:57] ptrb sustrik: it's OK to delete the context when a socket (built on that context) is still stuck in a read?
[15:57] sustrik yes
[15:57] ptrb groovy
[15:57] mikko even in 2.1?
[15:58] sustrik yes
[15:59] sustrik the delete will block
[15:59] sustrik the read will return ETERM
[15:59] sustrik and once you close the socket
[15:59] sustrik delete will unblock
[16:12] ptrb hmm, but is there another way to close a zmq::socket_t besides deleting it?
[16:15] ptrb delete blocking until the socket is deleted actually causes deadlock (in my app)
[16:16] ptrb oh, ETERM helps. nevermind.
[16:18] sustrik ptrb: zmq_close (deleting socket) never blocks
[16:19] ptrb well, my issue was I couldn't delete socket until I had re-acquired a mutex that the delete of context already owned
[16:19] ptrb so I can work around that if the zmq_recv's exception is detected to be ETERM, but apparently I cannot access the errnum as it's private
[16:21] ptrb but I guess I can treat all exceptions thrown from socket::recv() as terminating conditions, since EAGAIN is explicitly dealth with...
[16:22] ptrb *dealt
[16:23] sustrik ptrb: there should be a way to access ernum
[16:23] sustrik what about adding a function to retrieve it?
[16:23] ptrb that would be great
[16:23] ptrb want a patch? :)
[16:27] sustrik sure :)
[16:30] ptrb prefer maint or master?
[16:30] sustrik master
[16:30] sustrik it's a new functionality, not a bug
[16:30] ptrb understood
[16:51] Dale Is there a bug in 2.0.10 where messages are received multiple times?
[16:52] sustrik Dale: I am not aware of it
[16:56] Dale Didn't think so. That would be way too obvious. :)
[17:12] Dale If I'm using a zmq_device, should the frontend and backend be in different contexts?
[17:14] sustrik everyting running in a single process?
[17:14] sustrik a single context
[17:15] Dale That's what I thought.
[17:16] Dale I have a client, device, and server. Right now, the client is just reading lines from stdin and pushing them to the device. The server is reading messages from the device and writing to stdout.
[17:16] Dale Sometimes (about half the time?) I'm getting the same message twice in a row, and the server freezes up.
[17:23] Dale Instead of using a built-in zmq_device, I just tried replacing it with a while() loop of zmq_recv() and zmq_send() commands (with a printf to display the messages). The messages are being received by the device correctly. But when I relay them on to the server, they're getting sent multiple times.
[17:23] Dale Perhaps there's an IPC vs. TCP issue?
[17:24] Dale The frontend is listening to an IPC socket, and the backend is a TCP socket.
[17:30] Dale Aha. The documentation lies. If you are using IPC sockets and TCP sockets in the same process, they must be under different contexts.
[17:32] sustrik Dale: no, why do you think so?
[17:42] pieterh sustrik: the FAQ page is not great
[17:43] sustrik pieterh: i know
[17:43] pieterh the development questions part is ok
[17:43] pieterh except the winsock limit really should be raised, no excuse for it still being default :-/
[17:44] pieterh i'm going to remove all the text that is redundant
[17:44] pieterh what's the state with signal handlers / Ctrl-C?
[17:45] sustrik solved
[17:45] sustrik sort of
[17:45] pieterh ok
[17:45] sustrik what are faq pages good for anyway?
[17:45] sustrik i never use them
[17:45] pieterh indeed
[17:46] pieterh they were used for usenet groups
[17:46] pieterh when newbies would always ask the same questions
[17:46] pieterh we don't really get that on zeromq-dev
[17:46] pieterh better class of newbie, I think
[17:46] sustrik and throwing all kinds of info onto a single page is messy
[17:47] sustrik development
[17:47] sustrik licensign
[17:47] sustrik whatever
[17:47] pieterh i've removed the section headers, and licensing and amqp references
[17:52] pieterh sustrik: the FAQ does get a fair chunk of visits
[17:53] pieterh I'll start tracking it wrt the email list and IRC
[17:53] sustrik :)
[17:53] pieterh "Why is 0MQ so fantastic?"
[17:53] pieterh "We crush little kittens and mix them into the sauce"
[17:54] sustrik anyway, it's easy to clean the community site now
[17:55] pieterh people seem to like the new site
[17:56] pieterh i think we can consider this merge a success
[17:56] sustrik i hope so
[17:56] sustrik :)
[17:56] pieterh thanks for insisting...
[17:57] sustrik bindings moved to the central pane: nice
[17:58] sustrik pieterh: there's no link to licensing stuff from the newbies page afaics
[17:58] pieterh it should be on the download page, let me check
[17:58] pieterh also it's on the main start page
[17:58] pieterh last bullet item
[17:59] sustrik ah, that should do
[17:59] pieterh there isn't any license text on the download page... I'll add it
[18:00] ptrb urgh. segv's all over the place. what's the accepted way to trigger a break from a blocking zmq::socket_t::recv() from another thread?
[18:01] ptrb deleting the shared context to trigger the zmq_term() is causing all kinds of mischef
[18:01] sustrik ptrb: do you have a simple test code showing the problem?
[18:02] ptrb "simple", heh, I guess I could make one.
[18:15] ptrb so,
[18:15] ptrb my question revolves around lines 239 and 249
[18:15] ptrb actually I have to amend that...
[18:16] ptrb to
[18:17] ptrb lines 240/251
[18:19] ptrb if I delete m_context at 251 to initiate the zmq_term, and catch that exception at 240, I get segv's when I try to delete m_socket in the thread that's doing the recv()ing
[18:33] ptrb sustrik: actually I've gotta jet but maybe we can take this up tomorrow if you're around
[18:39] sustrik ptrb: ok
[19:25] bruiser i'm trying to design a zmq-based clustering system. i have N "routers" in the middle connected either directly or indirectly to M clients. every router is connected to every other router, and every router knows which router every client is directly connected to. the goal is to get a message from client A to client B
[19:25] bruiser from what i can tell, i need the "routers" to use only XREP sockets
[19:25] bruiser would anyone agree / disagree?
[19:27] bruiser the flow would be like Client(REQ) -> router1 forwards to router 2(XREP) -> router 2 receives message from router 1(XREP) -> router 2 sends message to client B(XREP) -> client B receives message from router 2 (REP)
[20:34] hnr Hi - having troubles with Python bindings on mac os x. origin/master is unable to import initthreads, and origin/2.0.8 cannot import _zmq. Has anyone had any success with these recently?
[20:37] hnr scratch that, just needed a new login shell :)
[20:54] mikko hnr:
[20:55] mikko hnr: the pyzmq build against master hasn't been stable but that might be an issue with the test suite
[20:55] mikko rather than the software itself
[21:29] bruiser if I have an XREP that is "connect"ed to mulitple other XREPs, can I send a message to only specific XREP of my choosing? If so, how do I do this?