diff options
Diffstat (limited to 'noatun/modules/net/net.cpp')
-rw-r--r-- | noatun/modules/net/net.cpp | 57 |
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" |