Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
kdeconnect-kde
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
4
Issues
4
List
Boards
Labels
Milestones
Merge Requests
18
Merge Requests
18
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
KDE
kdeconnect-kde
Commits
54de8fa2
Commit
54de8fa2
authored
Jul 24, 2013
by
Albert Vaca Cintora
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Android: Uses Apache Mina to abstract socket management
KDE: Housekeeping
parent
87513455
Changes
34
Hide whitespace changes
Inline
Side-by-side
Showing
34 changed files
with
163 additions
and
444 deletions
+163
-444
daemon/CMakeLists.txt
daemon/CMakeLists.txt
+7
-9
daemon/announcers/avahiannouncer.cpp
daemon/announcers/avahiannouncer.cpp
+0
-109
daemon/announcers/avahiannouncer.h
daemon/announcers/avahiannouncer.h
+0
-59
daemon/daemon.cpp
daemon/daemon.cpp
+27
-30
daemon/daemon.h
daemon/daemon.h
+7
-7
daemon/device.cpp
daemon/device.cpp
+4
-4
daemon/devicelinks/devicelink.cpp
daemon/devicelinks/devicelink.cpp
+3
-2
daemon/devicelinks/devicelink.h
daemon/devicelinks/devicelink.h
+4
-5
daemon/devicelinks/echodevicelink.cpp
daemon/devicelinks/echodevicelink.cpp
+2
-2
daemon/devicelinks/echodevicelink.h
daemon/devicelinks/echodevicelink.h
+4
-3
daemon/devicelinks/tcpdevicelink.cpp
daemon/devicelinks/tcpdevicelink.cpp
+8
-2
daemon/devicelinks/tcpdevicelink.h
daemon/devicelinks/tcpdevicelink.h
+5
-8
daemon/devicelinks/udpdevicelink.cpp
daemon/devicelinks/udpdevicelink.cpp
+0
-59
daemon/devicelinks/udpdevicelink.h
daemon/devicelinks/udpdevicelink.h
+0
-55
daemon/linkproviders/avahitcplinkprovider.cpp
daemon/linkproviders/avahitcplinkprovider.cpp
+13
-15
daemon/linkproviders/avahitcplinkprovider.h
daemon/linkproviders/avahitcplinkprovider.h
+8
-8
daemon/linkproviders/linkprovider.cpp
daemon/linkproviders/linkprovider.cpp
+2
-2
daemon/linkproviders/linkprovider.h
daemon/linkproviders/linkprovider.h
+11
-12
daemon/linkproviders/loopbacklinkprovider.cpp
daemon/linkproviders/loopbacklinkprovider.cpp
+4
-4
daemon/linkproviders/loopbacklinkprovider.h
daemon/linkproviders/loopbacklinkprovider.h
+8
-7
daemon/networkpackage.cpp
daemon/networkpackage.cpp
+4
-1
daemon/packageinterfaces/clipboardpackageinterface.h
daemon/packageinterfaces/clipboardpackageinterface.h
+2
-2
daemon/packageinterfaces/notificationpackageinterface.cpp
daemon/packageinterfaces/notificationpackageinterface.cpp
+3
-3
daemon/packageinterfaces/notificationpackageinterface.h
daemon/packageinterfaces/notificationpackageinterface.h
+6
-6
daemon/packageinterfaces/packageinterface.cpp
daemon/packageinterfaces/packageinterface.cpp
+2
-2
daemon/packageinterfaces/packageinterface.h
daemon/packageinterfaces/packageinterface.h
+6
-6
daemon/packageinterfaces/pausemusicpackageinterface.cpp
daemon/packageinterfaces/pausemusicpackageinterface.cpp
+3
-3
daemon/packageinterfaces/pausemusicpackageinterface.h
daemon/packageinterfaces/pausemusicpackageinterface.h
+4
-4
daemon/packageinterfaces/pingpackageinterface.cpp
daemon/packageinterfaces/pingpackageinterface.cpp
+2
-5
daemon/packageinterfaces/pingpackageinterface.h
daemon/packageinterfaces/pingpackageinterface.h
+6
-6
kcm/dbusinterfaces.h
kcm/dbusinterfaces.h
+3
-1
kcm/devicesmodel.h
kcm/devicesmodel.h
+2
-1
kcm/kcm.h
kcm/kcm.h
+2
-1
kcm/kcm.ui
kcm/kcm.ui
+1
-1
No files found.
daemon/CMakeLists.txt
View file @
54de8fa2
set
(
kded_kdeconnect_SRCS
announcers/announcer.cpp
announcers/fakeannouncer.cpp
announcers/avahiannouncer.cpp
announcers/avahitcpannouncer.cpp
linkproviders/linkprovider.cpp
linkproviders/loopbacklinkprovider.cpp
linkproviders/avahitcplinkprovider.cpp
devicelinks/devicelink.cpp
devicelinks/echodevicelink.cpp
devicelinks/udpdevicelink.cpp
devicelinks/tcpdevicelink.cpp
packageinterfaces/package
receiver
.cpp
packageinterfaces/pingpackage
receiver
.cpp
packageinterfaces/notificationpackage
receiver
.cpp
packageinterfaces/pausemusicpackage
receiver
.cpp
packageinterfaces/package
interface
.cpp
packageinterfaces/pingpackage
interface
.cpp
packageinterfaces/notificationpackage
interface
.cpp
packageinterfaces/pausemusicpackage
interface
.cpp
packageinterfaces/clipboardpackageinterface.cpp
networkpackage.cpp
...
...
daemon/announcers/avahiannouncer.cpp
deleted
100644 → 0
View file @
87513455
/**
* Copyright 2013 Albert Vaca <albertvaka@gmail.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License or (at your option) version 3 or any later version
* accepted by the membership of KDE e.V. (or its successor approved
* by the membership of KDE e.V.), which shall act as a proxy
* defined in Section 14 of version 3 of the license.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "avahiannouncer.h"
#include "devicelinks/udpdevicelink.h"
#include <QHostInfo>
AvahiAnnouncer
::
AvahiAnnouncer
()
{
QString
serviceType
=
"_kdeconnect._udp"
;
quint16
port
=
10601
;
//http://api.kde.org/4.x-api/kdelibs-apidocs/dnssd/html/index.html
service
=
new
DNSSD
::
PublicService
(
QHostInfo
::
localHostName
(),
serviceType
,
port
);
mUdpSocket
=
new
QUdpSocket
();
mUdpSocket
->
bind
(
port
);
connect
(
mUdpSocket
,
SIGNAL
(
readyRead
()),
this
,
SLOT
(
newConnection
()));
qDebug
()
<<
"Listening to udp messages"
;
}
void
AvahiAnnouncer
::
newConnection
()
{
qDebug
()
<<
"AvahiAnnouncer newConnection"
;
while
(
mUdpSocket
->
hasPendingDatagrams
())
{
QByteArray
datagram
;
datagram
.
resize
(
mUdpSocket
->
pendingDatagramSize
());
NetAddress
client
;
mUdpSocket
->
readDatagram
(
datagram
.
data
(),
datagram
.
size
(),
&
(
client
.
ip
),
&
(
client
.
port
));
//log.write(datagram);
qDebug
()
<<
"AvahiAnnouncer incomming udp datagram: "
<<
datagram
;
NetworkPackage
np
;
NetworkPackage
::
unserialize
(
datagram
,
&
np
);
if
(
np
.
type
()
==
"kdeconnect.identity"
)
{
const
QString
&
id
=
np
.
get
<
QString
>
(
"deviceId"
);
//const QString& name = np.get<QString>("deviceName");
qDebug
()
<<
"AvahiAnnouncer creating link to device"
<<
id
<<
"("
<<
client
.
ip
<<
","
<<
client
.
port
<<
")"
;
DeviceLink
*
dl
=
new
UdpDeviceLink
(
id
,
this
,
client
.
ip
);
connect
(
dl
,
SIGNAL
(
destroyed
(
QObject
*
)),
this
,
SLOT
(
deviceLinkDestroyed
(
QObject
*
)));
emit
onNewDeviceLink
(
np
,
dl
);
NetworkPackage
::
createIdentityPackage
(
&
np
);
dl
->
sendPackage
(
np
);
if
(
links
.
contains
(
id
))
{
//Delete old link if we already know it, probably it is down if this happens.
qDebug
()
<<
"Destroying old link"
;
delete
links
[
id
];
}
links
[
id
]
=
dl
;
}
else
{
qDebug
()
<<
"Not an identification package (wuh?)"
;
}
}
}
void
AvahiAnnouncer
::
deviceLinkDestroyed
(
QObject
*
deviceLink
)
{
const
QString
&
id
=
((
DeviceLink
*
)
deviceLink
)
->
deviceId
();
if
(
links
.
contains
(
id
))
links
.
remove
(
id
);
}
AvahiAnnouncer
::~
AvahiAnnouncer
()
{
delete
service
;
}
void
AvahiAnnouncer
::
setDiscoverable
(
bool
b
)
{
qDebug
()
<<
"Avahi announcing"
;
if
(
b
)
service
->
publishAsync
();
}
daemon/announcers/avahiannouncer.h
deleted
100644 → 0
View file @
87513455
/**
* Copyright 2013 Albert Vaca <albertvaka@gmail.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License or (at your option) version 3 or any later version
* accepted by the membership of KDE e.V. (or its successor approved
* by the membership of KDE e.V.), which shall act as a proxy
* defined in Section 14 of version 3 of the license.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef AVAHIANNOUNCER_H
#define AVAHIANNOUNCER_H
#include <QObject>
#include <QUdpSocket>
#include <KDE/DNSSD/PublicService>
#include "announcer.h"
#include "netaddress.h"
class
AvahiAnnouncer
:
public
Announcer
{
Q_OBJECT
public:
AvahiAnnouncer
();
~
AvahiAnnouncer
();
QString
name
()
{
return
"Avahi"
;
}
int
priority
()
{
return
PRIORITY_HIGH
;
}
void
setDiscoverable
(
bool
b
);
private
Q_SLOTS
:
void
newConnection
();
void
deviceLinkDestroyed
(
QObject
*
);
private:
DNSSD
::
PublicService
*
service
;
QUdpSocket
*
mUdpSocket
;
QMap
<
QString
,
DeviceLink
*>
links
;
};
#endif
daemon/daemon.cpp
View file @
54de8fa2
...
...
@@ -19,15 +19,16 @@
*/
#include "daemon.h"
#include "networkpackage.h"
#include "packageinterfaces/pingpackagereceiver.h"
#include "packageinterfaces/notificationpackagereceiver.h"
#include "packageinterfaces/pausemusicpackagereceiver.h"
#include "packageinterfaces/pingpackageinterface.h"
#include "packageinterfaces/notificationpackageinterface.h"
#include "packageinterfaces/pausemusicpackageinterface.h"
#include "packageinterfaces/clipboardpackageinterface.h"
#include "announcers/avahiannouncer.h"
#include "announcers/avahitcpannouncer.h"
#include "announcers/fakeannouncer.h"
#include "devicelinks/echodevicelink.h"
#include "linkproviders/avahitcplinkprovider.h"
#include "linkproviders/loopbacklinkprovider.h"
#include <QtNetwork/QUdpSocket>
#include <QFile>
...
...
@@ -54,23 +55,20 @@ Daemon::Daemon(QObject *parent, const QList<QVariant>&)
}
//Debugging
qDebug
()
<<
"
GO GO GO!
"
;
qDebug
()
<<
"
Starting KdeConnect daemon
"
;
config
->
group
(
"devices"
).
group
(
"paired"
).
group
(
"fake_unreachable"
).
writeEntry
(
"name"
,
"Fake device"
);
//TODO: Do not hardcode the load of the package
receiver
s
//TODO: Do not hardcode the load of the package
interface
s
//use: https://techbase.kde.org/Development/Tutorials/Services/Plugins
packageReceivers
.
push_back
(
new
PingPackageReceiver
());
packageReceivers
.
push_back
(
new
NotificationPackageReceiver
());
packageReceivers
.
push_back
(
new
PauseMusicPackageReceiver
());
packageReceiver
s
.
push_back
(
new
ClipboardPackageInterface
());
mPackageInterfaces
.
push_back
(
new
PingPackageInterface
());
mPackageInterfaces
.
push_back
(
new
NotificationPackageInterface
());
mPackageInterfaces
.
push_back
(
new
PauseMusicPackageInterface
());
mPackageInterface
s
.
push_back
(
new
ClipboardPackageInterface
());
//TODO: Do not hardcode the load of the device locators
//use: https://techbase.kde.org/Development/Tutorials/Services/Plugins
// announcers.insert(new AvahiAnnouncer());
announcers
.
insert
(
new
AvahiTcpAnnouncer
());
//announcers.insert(new LoopbackAnnouncer());
//TODO: Add package emitters
mLinkProviders
.
insert
(
new
AvahiTcpLinkProvider
());
//mLinkProviders.insert(new LoopbackLinkProvider());
//Read remebered paired devices
const
KConfigGroup
&
known
=
config
->
group
(
"devices"
).
group
(
"paired"
);
...
...
@@ -80,8 +78,8 @@ Daemon::Daemon(QObject *parent, const QList<QVariant>&)
const
KConfigGroup
&
data
=
known
.
group
(
id
);
const
QString
&
name
=
data
.
readEntry
<
QString
>
(
"name"
,
defaultName
);
Device
*
device
=
new
Device
(
id
,
name
);
m
_d
evices
[
id
]
=
device
;
Q_FOREACH
(
Package
Receiver
*
pr
,
packageReceiver
s
)
{
m
D
evices
[
id
]
=
device
;
Q_FOREACH
(
Package
Interface
*
pr
,
mPackageInterface
s
)
{
connect
(
device
,
SIGNAL
(
receivedPackage
(
const
Device
&
,
const
NetworkPackage
&
)),
pr
,
SLOT
(
receivePackage
(
const
Device
&
,
const
NetworkPackage
&
)));
connect
(
pr
,
SIGNAL
(
sendPackage
(
const
NetworkPackage
&
)),
...
...
@@ -90,7 +88,7 @@ Daemon::Daemon(QObject *parent, const QList<QVariant>&)
}
//Listen to incomming connections
Q_FOREACH
(
Announcer
*
a
,
announc
ers
)
{
Q_FOREACH
(
LinkProvider
*
a
,
mLinkProvid
ers
)
{
connect
(
a
,
SIGNAL
(
onNewDeviceLink
(
NetworkPackage
,
DeviceLink
*
)),
this
,
SLOT
(
onNewDeviceLink
(
NetworkPackage
,
DeviceLink
*
)));
}
...
...
@@ -102,9 +100,8 @@ Daemon::Daemon(QObject *parent, const QList<QVariant>&)
}
void
Daemon
::
setDiscoveryEnabled
(
bool
b
)
{
qDebug
()
<<
"Discovery:"
<<
b
;
//Listen to incomming connections
Q_FOREACH
(
Announcer
*
a
,
announc
ers
)
{
Q_FOREACH
(
LinkProvider
*
a
,
mLinkProvid
ers
)
{
a
->
setDiscoverable
(
b
);
}
...
...
@@ -112,7 +109,7 @@ void Daemon::setDiscoveryEnabled(bool b)
QStringList
Daemon
::
devices
()
{
return
m
_d
evices
.
keys
();
return
m
D
evices
.
keys
();
}
...
...
@@ -120,12 +117,12 @@ void Daemon::onNewDeviceLink(const NetworkPackage& identityPackage, DeviceLink*
{
const
QString
&
id
=
identityPackage
.
get
<
QString
>
(
"deviceId"
);
qDebug
()
<<
"Device discovered"
<<
id
<<
"via"
<<
dl
->
announc
er
()
->
name
();
qDebug
()
<<
"Device discovered"
<<
id
<<
"via"
<<
dl
->
provid
er
()
->
name
();
if
(
m
_d
evices
.
contains
(
id
))
{
if
(
m
D
evices
.
contains
(
id
))
{
qDebug
()
<<
"It is a known device"
;
Device
*
device
=
m
_d
evices
[
id
];
Device
*
device
=
m
D
evices
[
id
];
device
->
addLink
(
dl
);
KNotification
*
notification
=
new
KNotification
(
"pingReceived"
);
//KNotification::Persistent
...
...
@@ -142,8 +139,8 @@ void Daemon::onNewDeviceLink(const NetworkPackage& identityPackage, DeviceLink*
const
QString
&
name
=
identityPackage
.
get
<
QString
>
(
"deviceName"
);
Device
*
device
=
new
Device
(
id
,
name
,
dl
);
m
_d
evices
[
id
]
=
device
;
Q_FOREACH
(
Package
Receiver
*
pr
,
packageReceiver
s
)
{
m
D
evices
[
id
]
=
device
;
Q_FOREACH
(
Package
Interface
*
pr
,
mPackageInterface
s
)
{
connect
(
device
,
SIGNAL
(
receivedPackage
(
const
Device
&
,
const
NetworkPackage
&
)),
pr
,
SLOT
(
receivePackage
(
const
Device
&
,
const
NetworkPackage
&
)));
connect
(
pr
,
SIGNAL
(
sendPackage
(
const
NetworkPackage
&
)),
...
...
@@ -156,6 +153,6 @@ void Daemon::onNewDeviceLink(const NetworkPackage& identityPackage, DeviceLink*
Daemon
::~
Daemon
()
{
qDebug
()
<<
"SAYONARA BABY"
;
}
daemon/daemon.h
View file @
54de8fa2
...
...
@@ -39,9 +39,9 @@
#include <KConfig>
#include "device.h"
#include "packageinterfaces/package
receiver
.h"
#include "packageinterfaces/package
interface
.h"
#include "devicelinks/devicelink.h"
#include "
announcers/announc
er.h"
#include "
linkproviders/linkprovid
er.h"
class
QUdpSocket
;
...
...
@@ -75,13 +75,13 @@ private:
//Every known device
QMap
<
QString
,
Device
*>
m
_d
evices
;
QMap
<
QString
,
Device
*>
m
D
evices
;
//Different ways to find devices and connect to them
, ordered by priority
QSet
<
Announcer
*>
announc
ers
;
//Different ways to find devices and connect to them
QSet
<
LinkProvider
*>
mLinkProvid
ers
;
//
Everybody who wants to be notified about a new package
QVector
<
Package
Receiver
*>
packageReceiver
s
;
//
The classes that send and receive the packages
QVector
<
Package
Interface
*>
mPackageInterface
s
;
};
...
...
daemon/device.cpp
View file @
54de8fa2
...
...
@@ -2,7 +2,7 @@
#include <ksharedptr.h>
#include <ksharedconfig.h>
#include "devicelinks/devicelink.h"
#include "
announcers/announc
er.h"
#include "
linkproviders/linkprovid
er.h"
#include <KConfigGroup>
#include <QDebug>
...
...
@@ -59,12 +59,12 @@ void Device::setPair(bool b)
static
bool
lessThan
(
DeviceLink
*
p1
,
DeviceLink
*
p2
)
{
return
p1
->
announcer
()
->
priority
()
>
p2
->
announc
er
()
->
priority
();
return
p1
->
provider
()
->
priority
()
>
p2
->
provid
er
()
->
priority
();
}
void
Device
::
addLink
(
DeviceLink
*
link
)
{
qDebug
()
<<
"Adding link to "
<<
id
()
<<
"via"
<<
link
->
announc
er
();
qDebug
()
<<
"Adding link to "
<<
id
()
<<
"via"
<<
link
->
provid
er
();
connect
(
link
,
SIGNAL
(
destroyed
(
QObject
*
)),
this
,
SLOT
(
linkDestroyed
(
QObject
*
)));
...
...
@@ -111,7 +111,7 @@ QStringList Device::availableLinks() const
{
QStringList
sl
;
Q_FOREACH
(
DeviceLink
*
dl
,
m_deviceLinks
)
{
sl
.
append
(
dl
->
announc
er
()
->
name
());
sl
.
append
(
dl
->
provid
er
()
->
name
());
}
return
sl
;
}
...
...
daemon/devicelinks/devicelink.cpp
View file @
54de8fa2
...
...
@@ -19,11 +19,12 @@
*/
#include "devicelink.h"
#include "linkproviders/linkprovider.h"
DeviceLink
::
DeviceLink
(
const
QString
&
deviceId
,
Announc
er
*
parent
)
DeviceLink
::
DeviceLink
(
const
QString
&
deviceId
,
LinkProvid
er
*
parent
)
:
QObject
(
parent
)
,
mDeviceId
(
deviceId
)
,
m
Announc
er
(
parent
)
,
m
LinkProvid
er
(
parent
)
{
//gcc complains if we don't add something to compile on a class with virtual functions
}
\ No newline at end of file
daemon/devicelinks/devicelink.h
View file @
54de8fa2
...
...
@@ -24,10 +24,9 @@
#include <QObject>
#include "networkpackage.h"
#include <announcers/announcer.h>
class
Device
;
class
Announc
er
;
class
LinkProvid
er
;
class
DeviceLink
:
public
QObject
...
...
@@ -35,10 +34,10 @@ class DeviceLink
Q_OBJECT
public:
DeviceLink
(
const
QString
&
deviceId
,
Announc
er
*
parent
);
DeviceLink
(
const
QString
&
deviceId
,
LinkProvid
er
*
parent
);
const
QString
&
deviceId
()
{
return
mDeviceId
;
}
Announcer
*
announcer
()
{
return
mAnnounc
er
;
}
LinkProvider
*
provider
()
{
return
mLinkProvid
er
;
}
virtual
bool
sendPackage
(
const
NetworkPackage
&
np
)
=
0
;
...
...
@@ -47,7 +46,7 @@ signals:
private:
QString
mDeviceId
;
Announcer
*
mAnnounc
er
;
LinkProvider
*
mLinkProvid
er
;
};
...
...
daemon/devicelinks/echodevicelink.cpp
View file @
54de8fa2
...
...
@@ -20,9 +20,9 @@
#include "echodevicelink.h"
#include "
announcers/fakeannounc
er.h"
#include "
linkproviders/loopbacklinkprovid
er.h"
EchoDeviceLink
::
EchoDeviceLink
(
const
QString
&
d
,
Loopback
Announc
er
*
a
)
EchoDeviceLink
::
EchoDeviceLink
(
const
QString
&
d
,
Loopback
LinkProvid
er
*
a
)
:
DeviceLink
(
d
,
a
)
{
...
...
daemon/devicelinks/echodevicelink.h
View file @
54de8fa2
...
...
@@ -22,13 +22,14 @@
#define ECHODEVICELINK_H
#include "devicelink.h"
class
Loopback
Announc
er
;
class
Loopback
LinkProvid
er
;
class
EchoDeviceLink
:
public
DeviceLink
class
EchoDeviceLink
:
public
DeviceLink
{
Q_OBJECT
public:
EchoDeviceLink
(
const
QString
&
d
,
Loopback
Announc
er
*
a
);
EchoDeviceLink
(
const
QString
&
d
,
Loopback
LinkProvid
er
*
a
);
bool
sendPackage
(
const
NetworkPackage
&
np
)
{
emit
receivedPackage
(
np
);
...
...
daemon/devicelinks/tcpdevicelink.cpp
View file @
54de8fa2
...
...
@@ -19,9 +19,9 @@
*/
#include "tcpdevicelink.h"
#include "
announcers/avahitcpannounc
er.h"
#include "
linkproviders/avahitcplinkprovid
er.h"
TcpDeviceLink
::
TcpDeviceLink
(
const
QString
&
d
,
AvahiTcp
Announc
er
*
a
,
QTcpSocket
*
socket
)
TcpDeviceLink
::
TcpDeviceLink
(
const
QString
&
d
,
AvahiTcp
LinkProvid
er
*
a
,
QTcpSocket
*
socket
)
:
DeviceLink
(
d
,
a
)
{
mSocket
=
socket
;
...
...
@@ -29,6 +29,12 @@ TcpDeviceLink::TcpDeviceLink(const QString& d, AvahiTcpAnnouncer* a, QTcpSocket*
connect
(
mSocket
,
SIGNAL
(
readyRead
()),
this
,
SLOT
(
dataReceived
()));
}
bool
TcpDeviceLink
::
sendPackage
(
const
NetworkPackage
&
np
)
{
int
written
=
mSocket
->
write
(
np
.
serialize
());
return
written
!=
-
1
;
}
void
TcpDeviceLink
::
dataReceived
()
{
qDebug
()
<<
"TcpDeviceLink dataReceived"
;
...
...
daemon/devicelinks/tcpdevicelink.h
View file @
54de8fa2
...
...
@@ -27,21 +27,18 @@
#include "devicelink.h"
#include <QTcpSocket>
#include <QTcpServer>
class
AvahiTcp
Announc
er
;
class
AvahiTcp
LinkProvid
er
;
class
TcpDeviceLink
:
public
DeviceLink
class
TcpDeviceLink
:
public
DeviceLink
{
Q_OBJECT
public:
TcpDeviceLink
(
const
QString
&
d
,
AvahiTcp
Announc
er
*
a
,
QTcpSocket
*
socket
);
TcpDeviceLink
(
const
QString
&
d
,
AvahiTcp
LinkProvid
er
*
a
,
QTcpSocket
*
socket
);
bool
sendPackage
(
const
NetworkPackage
&
np
)
{
mSocket
->
write
(
np
.
serialize
());
return
true
;
}
bool
sendPackage
(
const
NetworkPackage
&
np
);
private
Q_SLOTS
:
void
dataReceived
();
...
...
daemon/devicelinks/udpdevicelink.cpp
deleted
100644 → 0
View file @
87513455
/**
* Copyright 2013 Albert Vaca <albertvaka@gmail.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License or (at your option) version 3 or any later version
* accepted by the membership of KDE e.V. (or its successor approved
* by the membership of KDE e.V.), which shall act as a proxy
* defined in Section 14 of version 3 of the license.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "udpdevicelink.h"
#include "announcers/avahiannouncer.h"
UdpDeviceLink
::
UdpDeviceLink
(
const
QString
&
d
,
AvahiAnnouncer
*
a
,
QHostAddress
ip
)
:
DeviceLink
(
d
,
a
)
{
mIp
=
ip
;
mSocket
=
new
QUdpSocket
();
mSocket
->
bind
(
mPort
);
connect
(
mSocket
,
SIGNAL
(
readyRead
()),
this
,
SLOT
(
dataReceived
()));
}
void
UdpDeviceLink
::
dataReceived
()
{
qDebug
()
<<
"UdpDeviceLink dataReceived"
;
while
(
mSocket
->
hasPendingDatagrams
())
{
QByteArray
datagram
;
datagram
.
resize
(
mSocket
->
pendingDatagramSize
());
QHostAddress
sender
;
quint16
senderPort
;
mSocket
->
readDatagram
(
datagram
.
data
(),
datagram
.
size
(),
&
sender
,
&
senderPort
);
//log.write(datagram);
qDebug
()
<<
datagram
;
NetworkPackage
np
;
NetworkPackage
::
unserialize
(
datagram
,
&
np
);
emit
receivedPackage
(
np
);
}
}
daemon/devicelinks/udpdevicelink.h
deleted
100644 → 0
View file @
87513455
/**
* Copyright 2013 Albert Vaca <albertvaka@gmail.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License or (at your option) version 3 or any later version
* accepted by the membership of KDE e.V. (or its successor approved
* by the membership of KDE e.V.), which shall act as a proxy
* defined in Section 14 of version 3 of the license.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef UDPDEVICELINK_H
#define UDPDEVICELINK_H
#include <QObject>
#include <QString>
#include "devicelink.h"
#include <QUdpSocket>
class
AvahiAnnouncer
;
class
UdpDeviceLink
:
public
DeviceLink
{
Q_OBJECT
public:
UdpDeviceLink
(
const
QString
&
d
,
AvahiAnnouncer
*
a
,
QHostAddress
ip
);
bool
sendPackage
(
const
NetworkPackage
&
np
)
{
mSocket
->
writeDatagram
(
np
.
serialize
(),
mIp
,
mPort
+
1
);
return
true
;
}
private
Q_SLOTS
:
void
dataReceived
();
private:
QUdpSocket
*
mSocket
;
QHostAddress
mIp
;
const
quint16
mPort
=
10603
;
};
#endif // UDPDEVICELINK_H
daemon/
announcers/avahitcpannounc
er.cpp
→
daemon/
linkproviders/avahitcplinkprovid
er.cpp
View file @
54de8fa2
...
...
@@ -18,14 +18,14 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "avahitcp
announc
er.h"
#include "avahitcp
linkprovid
er.h"
#include "devicelinks/tcpdevicelink.h"
#include <QHostInfo>
#include <QTcpServer>
AvahiTcp
Announcer
::
AvahiTcpAnnounc
er
()
AvahiTcp
LinkProvider
::
AvahiTcpLinkProvid
er
()
{
QString
serviceType
=
"_kdeconnect._tcp"
;
quint16
port
=
10602
;
...
...
@@ -40,9 +40,9 @@ AvahiTcpAnnouncer::AvahiTcpAnnouncer()
}
void
AvahiTcp
Announc
er
::
newConnection
()
void
AvahiTcp
LinkProvid
er
::
newConnection
()
{
qDebug
()
<<
"AvahiTcp
Announc
er newConnection"
;
qDebug
()
<<
"AvahiTcp
LinkProvid
er newConnection"
;
QTcpSocket
*
socket
=
mServer
->
nextPendingConnection
();
socket
->
setSocketOption
(
QAbstractSocket
::
KeepAliveOption
,
1
);
...
...
@@ -51,21 +51,19 @@ void AvahiTcpAnnouncer::newConnection()
NetworkPackage
np
;
NetworkPackage
::
createIdentityPackage
(
&
np
);
qDebug
()
<<
socket
->
isWritable
();
qDebug
()
<<
socket
->
isOpen
();
int
written
=
socket
->
write
(
np
.
serialize
());
qDebug
()
<<
np
.
serialize
();
qDebug
()
<<
"AvahiTcp
Announcer sent tcp package
"
<<
written
<<
" bytes written, waiting for reply"
;
qDebug
()
<<
"AvahiTcp
LinkProvider sent package.
"
<<
written
<<
" bytes written, waiting for reply"
;
}
void
AvahiTcp
Announc
er
::
dataReceived
()
void
AvahiTcp
LinkProvid
er
::
dataReceived
()
{
QTcpSocket
*
socket
=
(
QTcpSocket
*
)
QObject
::
sender
();
QByteArray
data
=
socket
->
readLine
();
qDebug
()
<<
"AvahiTcp
Announc
er received reply:"
<<
data
;
qDebug
()
<<
"AvahiTcp
LinkProvid
er received reply:"
<<
data
;
NetworkPackage
np
;
NetworkPackage
::
unserialize
(
data
,
&
np
);
...
...
@@ -84,32 +82,32 @@ void AvahiTcpAnnouncer::dataReceived()
}
links
[
id
]
=
dl
;
qDebug
()
<<
"Avahi
Announc
er creating link to device"
<<
id
<<
"("
<<
socket
->
peerAddress
()
<<
")"
;
qDebug
()
<<
"Avahi
TcpLinkProvid
er creating link to device"
<<
id
<<
"("
<<
socket
->
peerAddress
()
<<
")"
;
emit
onNewDeviceLink
(
np
,
dl
);
disconnect
(
socket
,
SIGNAL
(
readyRead
()),
this
,
SLOT
(
dataReceived
()));
}
else
{
qDebug
()
<<
"AvahiTcp
Announc
er/newConnection: Not an identification package (wuh?)"
;
qDebug
()
<<
"AvahiTcp
LinkProvid
er/newConnection: Not an identification package (wuh?)"
;
}
}
void
AvahiTcp
Announc
er
::
deviceLinkDestroyed
(
QObject
*
deviceLink
)
void
AvahiTcp
LinkProvid
er
::
deviceLinkDestroyed
(
QObject
*
deviceLink
)
{
const
QString
&
id
=
((
DeviceLink
*
)
deviceLink
)
->
deviceId
();
if
(
links
.
contains
(
id
))
links
.
remove
(
id
);
}
AvahiTcp
Announcer
::~
AvahiTcpAnnounc
er
()
AvahiTcp
LinkProvider
::~
AvahiTcpLinkProvid
er
()
{
delete
service
;
}
void
AvahiTcp
Announc
er
::
setDiscoverable
(
bool
b
)
void
AvahiTcp
LinkProvid
er
::
setDiscoverable
(
bool
b
)
{
qDebug
()
<<
"AvahiTcp
announcing"
;
qDebug
()
<<
"AvahiTcp
LinkProvider discoverable:"
<<
b
;
if
(
b
)
service
->
publishAsync
();
}