~mateo-salta/nitroshare/nitroshare

« back to all changes in this revision

Viewing changes to src/discovery/CBasicListener.cpp

  • Committer: Nathan Osman
  • Date: 2012-06-29 22:01:55 UTC
  • Revision ID: admin@quickmediasolutions.com-20120629220155-ogwrn9fxxve9wyw1
Moved a TON of the broadcast and discovery code around, creating separate classes for each and partially implementing their use in the first start wizard.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* NitroShare - A simple network file sharing tool.
 
2
   Copyright (C) 2012 Nathan Osman
 
3
 
 
4
   This program is free software: you can redistribute it and/or modify
 
5
   it under the terms of the GNU General Public License as published by
 
6
   the Free Software Foundation, either version 3 of the License, or
 
7
   (at your option) any later version.
 
8
 
 
9
   This program is distributed in the hope that it will be useful,
 
10
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
12
   GNU General Public License for more details.
 
13
 
 
14
   You should have received a copy of the GNU General Public License
 
15
   along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
16
 
 
17
#include <discovery/CBasicListener.h>
 
18
#include <util/settings.h>
 
19
 
 
20
CBasicListener::CBasicListener()
 
21
{
 
22
    connect(this, SIGNAL(readyRead()), SLOT(OnReadyRead()));
 
23
}
 
24
 
 
25
void CBasicListener::Init()
 
26
{
 
27
    /* Stop listening on the socket if we currently are. */
 
28
    close();
 
29
 
 
30
    /* Make an attempt to bind to the user-specified broadcast port. */
 
31
    if(!bind(Settings::Get("Network/BroadcastPort").toUInt(), QUdpSocket::ShareAddress))
 
32
        emit Error(tr("Unable to listen for broadcast notifications."));
 
33
}
 
34
 
 
35
void CBasicListener::OnReadyRead()
 
36
{
 
37
    /* Determine the size of the incoming datagram and
 
38
       create room for it in a buffer. */
 
39
    QByteArray message;
 
40
    message.resize(pendingDatagramSize());
 
41
 
 
42
    /* Grab the message (and the address that sent it). */
 
43
    QHostAddress address;
 
44
    readDatagram(message.data(), message.size(), &address);
 
45
 
 
46
    emit Ping(address, message);
 
47
}