summaryrefslogtreecommitdiffstats
path: root/noatun/modules/net/net.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'noatun/modules/net/net.cpp')
-rw-r--r--noatun/modules/net/net.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/noatun/modules/net/net.cpp b/noatun/modules/net/net.cpp
new file mode 100644
index 00000000..5e3ba707
--- /dev/null
+++ b/noatun/modules/net/net.cpp
@@ -0,0 +1,57 @@
+#include "net.h"
+#include <noatun/player.h>
+#include <noatun/app.h>
+
+extern "C"
+{
+ KDE_EXPORT Plugin *create_plugin()
+ {
+ return new Net();
+ }
+}
+
+
+Net::Net() : QServerSocket(7539, 10), Plugin()
+{
+ mFDs.setAutoDelete(true);
+ connect(napp->player(), SIGNAL(newSong()), SLOT(newSong()));
+}
+
+Net::~Net()
+{
+}
+
+
+void Net::newConnection(int fd)
+{
+ QSocket *s=new QSocket;
+ s->setSocket(fd);
+ mFDs.append(s);
+}
+
+void Net::newSong()
+{
+ if (!napp->player()->current())
+ return;
+
+ for (QSocket *i=mFDs.first(); i!=0; i=mFDs.next())
+ {
+ QCString line;
+ line=napp->player()->current().title().latin1();
+ line+='\n';
+ ::write(i->socket(), (const void*)line.data(), line.length());
+ }
+}
+
+void Net::closed()
+{
+ for (QSocket *i=mFDs.first(); i!=0; i=mFDs.next())
+ {
+ if (sender()==i)
+ mFDs.removeRef(i);
+ }
+}
+
+
+
+#include "net.moc"