<div dir="ltr"><div>Avi,<br><br></div><div>I suggest Go [1] as the implementation language.<br><br></div><div>Advantages it has a new language:<br><br></div><div>* garbage collection<br></div><div>* simple, familiar syntax and semantics<br>
</div><div>* a large, well-documented standard library [2]<br></div><div>* an interactive tour for learning the language [3]<br></div><div>* an active and helpful community<br></div><div><br></div><div>Reasons I think it's good for your project:<br>
<br></div><div>* lightweight coroutines ("goroutines") providing language-level support for multi-threading - much simpler and more natural than writing threaded code in (for example) Python and C<br></div><div>
* a very good socket API<br></div><div>* a solid HTTP client API (for submitting your RESTful requests)<br></div><div><br></div><div>I've been using Go professionally for about two years now and it's drastically simplified a number of networked projects that I've worked on.<br>
<br>Happy to discuss more off list if you have more questions about it.<br></div><div><br></div><div>[1] <a href="http://golang.org">http://golang.org</a><br>[2] <a href="http://golang.org/pkg/">http://golang.org/pkg/</a><br>
[3] <a href="http://golang.org/pkg/">http://golang.org/pkg/</a><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jun 4, 2014 at 10:09 AM, Avi Miller <span dir="ltr"><<a href="mailto:avi.miller@gmail.com" target="_blank">avi.miller@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hey LUV’rs and LA'rs,<br>
<br>
I volunteer for a community/NFP radio station here in Melbourne. We’re currently deploying a new radio automation system, as well as replacing our existing online streaming services.<br>
<br>
The radio automation system that has a TCP service running on a particular port. Whenever a play event fires in the studio, the automation system sends out the data to anything listening on that port. I have control over what the automation system sends.<br>
<br>
What I need to do is write an intermediate daemon that connects to the upstream automation system looking for song events (which has an associated duration field) and presents a similar interface to the stream publisher.<br>
<br>
This is because we don’t use the automation system for every show, so after the event duration expires I want my intermediate system to send currently airing show information instead. This way, the client-side streaming apps will either see information about the song currently being played, or if automation is not active, information about the show currently on air.<br>
<br>
As an added bonus, I’d like the intermediate daemon to also submit RESTful API requests to a web service online.<br>
<br>
So, it looks vaguely like this:<br>
<br>
[Stream publisher] ==> [Intermediate daemon] ==> [Automation system]<br>
==REST=> [web service]<br>
<br>
I suspect I’ll need a multi-threaded application, with one thread to listen for events from the automation system and two more to send events to the stream publisher and the RESTful service. Given that the majority of my programming experience is in PHP, I’m going to have to learn something new for this.<br>
<br>
So, I’m looking for suggestions on the programming language and/or tools that would be well-suited for this task. Alternatively, if there is already something that could do this (or be munged to do this), I’m all ears.<br>
<br>
Thanks,<br>
Avi<br>
_______________________________________________<br>
linux-aus mailing list<br>
<a href="mailto:linux-aus@lists.linux.org.au">linux-aus@lists.linux.org.au</a><br>
<a href="http://lists.linux.org.au/listinfo/linux-aus" target="_blank">http://lists.linux.org.au/listinfo/linux-aus</a><br>
</blockquote></div><br></div>