git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1171620 283d02a7-25f6-0310-bc7c-ecb5cbfe19dav3.5.13-sru
parent
b35cd0e835
commit
a00e1eb8e1
@ -1,37 +0,0 @@
|
||||
#SUBDIRS = networkstatustray
|
||||
|
||||
METASOURCES = AUTO
|
||||
|
||||
kde_module_LTLIBRARIES = kded_networkstatus.la
|
||||
lib_LTLIBRARIES = libnetworkstatus.la libconnectionmanager.la
|
||||
|
||||
libnetworkstatus_la_LIBADD = $(LIB_KDECORE)
|
||||
libnetworkstatus_la_LDFLAGS = $(all_libraries)
|
||||
libnetworkstatus_la_SOURCES = networkstatuscommon.cpp
|
||||
|
||||
libconnectionmanager_la_LIBADD = $(LIB_KDECORE)
|
||||
libconnectionmanager_la_LDFLAGS = $(all_libraries)
|
||||
libconnectionmanager_la_SOURCES = connectionmanager.cpp connectionmanager.skel clientiface.stub
|
||||
|
||||
INCLUDES = $(all_includes)
|
||||
|
||||
kded_networkstatus_la_SOURCES = networkstatus.cpp networkstatus.skel \
|
||||
clientiface.skel serviceiface.skel network.cpp
|
||||
#kclientiface.skel serviceiface.skel
|
||||
kded_networkstatus_la_LIBADD = $(LIB_KDECORE) $(LIB_KIO) ./libnetworkstatus.la
|
||||
kded_networkstatus_la_LDFLAGS = $(all_libraries) -module -avoid-version
|
||||
|
||||
servicesdir = $(kde_servicesdir)/kded
|
||||
services_DATA = networkstatus.desktop
|
||||
|
||||
noinst_HEADERS = serviceifaceimpl.h \
|
||||
network.h clientifaceimpl.h testservice.h connectionmanager.h
|
||||
|
||||
include_HEADERS = serviceiface.h provideriface.h networkstatuscommon.h
|
||||
|
||||
bin_PROGRAMS = networkstatustestservice
|
||||
|
||||
networkstatustestservice_LDFLAGS = $(all_libraries)
|
||||
networkstatustestservice_LDADD = libnetworkstatus.la
|
||||
|
||||
networkstatustestservice_SOURCES = testservice.cpp provideriface.skel serviceiface.stub
|
@ -1,29 +0,0 @@
|
||||
This table defines the actions to be taken on state transition.
|
||||
|
||||
TODO: potentially add extra states OnlineReading and OnlineWriting
|
||||
|
||||
NEW
|
||||
|Offline | Online |
|
||||
---+---+----------------+---------------+
|
||||
| | |N|set online |
|
||||
| | |L|reload |
|
||||
| O | |C|resources |
|
||||
| F | +---------------+
|
||||
| F | |L|set online |
|
||||
O | | |C|reload res. |
|
||||
L | | | |write res. |
|
||||
D +---+----------------+---------------+
|
||||
| |N|set offline | |
|
||||
| |C| | |
|
||||
| | | | |
|
||||
| O +---------------+| |
|
||||
| N |U|set offline | |
|
||||
| |W|write locally | |
|
||||
| |C|(subject to | |
|
||||
| | | save policy)| |
|
||||
---+---+----------------+---------------+
|
||||
LC = Local changes exist
|
||||
NLC = No local changes exist
|
||||
UWC = Unsaved changes exist
|
||||
NC = no changes exist
|
||||
|
@ -1,77 +0,0 @@
|
||||
/*
|
||||
This file is part of kdepim.
|
||||
|
||||
Copyright (c) 2005 Will Stephenson <lists@stevello.free-online.co.uk>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; see the file COPYING.LIB. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef KDED_NETWORKSTATUS_CLIENTIFACE_H
|
||||
#define KDED_NETWORKSTATUS_CLIENTIFACE_H
|
||||
|
||||
#include "networkstatuscommon.h"
|
||||
|
||||
#include <dcopobject.h>
|
||||
|
||||
class ClientIface : virtual public DCOPObject
|
||||
{
|
||||
K_DCOP
|
||||
k_dcop:
|
||||
/** Get the set of networks that the daemon is aware of. Mostly for debug */
|
||||
virtual TQStringList networks() = 0;
|
||||
/**
|
||||
* Get the status of the connection to the given host.
|
||||
* @param host
|
||||
* @return a NetworkStatus::EnumStatus representing the state of the connection to the given host
|
||||
*/
|
||||
virtual int status( const TQString & host) = 0;
|
||||
/**
|
||||
* Request a connection to the named host, registering the application's usage of this connection
|
||||
* @param host The hostname the client wants to connect to.
|
||||
* @param userInitiated Indicates whether the connection is a direct result of a user action or is a background task. Used by the daemon to decide whether to create an on-demand connection.
|
||||
* @return An NetworkStatus::EnumRequestResult indicating whether the request was accepted
|
||||
*/
|
||||
virtual int request( const TQString & host, bool userInitiated ) = 0;
|
||||
/**
|
||||
* Indicate that a previously registered connection to the given host is no longer needed by this client
|
||||
* @param host The hostname being relinquished.
|
||||
*/
|
||||
virtual void relinquish( const TQString & host ) = 0;
|
||||
/**
|
||||
* Indicate that a communication failure has occurred for a given host
|
||||
* @param host The hostname for which the failure occurred.
|
||||
* @return True indicates the caller should try again to lookup the host, as the daemon has another IP address available.
|
||||
*/
|
||||
virtual bool reportFailure( const TQString & host ) = 0;
|
||||
/**
|
||||
* Utility method to check the daemon's status
|
||||
*/
|
||||
k_dcop_signals:
|
||||
/**
|
||||
* A status change occurred for the network(s) used to connect to the given host.
|
||||
* @param host The host which the application has indicated it is using
|
||||
* @param status The new status of the network used to reach host.
|
||||
*/
|
||||
void statusChange( TQString host, int status );
|
||||
/**
|
||||
* The network would like to shut down - any clients using this host are to finish using it immediately and call
|
||||
* relinquish() when done.
|
||||
* @param host The host, registered as in use by applications, which is about to be disconnected.
|
||||
*/
|
||||
void shutdownRequested( TQString host );
|
||||
};
|
||||
|
||||
#endif
|
@ -1,51 +0,0 @@
|
||||
/*
|
||||
This file is part of kdepim.
|
||||
|
||||
Copyright (c) 2005 Will Stephenson <lists@stevello.free-online.co.uk>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; see the file COPYING.LIB. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include "clientifaceimpl.h"
|
||||
|
||||
ClientIfaceImpl::ClientIfaceImpl( NetworkStatusModule * module ) : m_module ( module )
|
||||
{
|
||||
}
|
||||
|
||||
int ClientIfaceImpl::status( TQString host )
|
||||
{
|
||||
return m_module->status( host );
|
||||
}
|
||||
|
||||
int ClientIfaceImpl::request( TQString host, bool userInitiated )
|
||||
{
|
||||
return m_module->request( host, userInitiated );
|
||||
}
|
||||
|
||||
void ClientIfaceImpl::relinquish( TQString host )
|
||||
{
|
||||
m_module->relinquish( host );
|
||||
}
|
||||
|
||||
bool ClientIfaceImpl::reportFailure( TQString host )
|
||||
{
|
||||
return m_module->reportFailure( host );
|
||||
}
|
||||
|
||||
// TQString ClientIfaceImpl::statusAsString()
|
||||
// {
|
||||
//
|
||||
// }
|
@ -1,43 +0,0 @@
|
||||
/*
|
||||
This file is part of kdepim.
|
||||
|
||||
Copyright (c) 2005 Will Stephenson <lists@stevello.free-online.co.uk>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; see the file COPYING.LIB. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef NETWORKSTATUS_CLIENTIFACEIMPL_H
|
||||
#define NETWORKSTATUS_CLIENTIFACEIMPL_H
|
||||
|
||||
#include <tqstring.h>
|
||||
|
||||
#include "clientiface.h"
|
||||
#include "networkstatus.h"
|
||||
|
||||
class ClientIfaceImpl : virtual public ClientIface
|
||||
{
|
||||
public:
|
||||
ClientIfaceImpl( NetworkStatusModule * module );
|
||||
int status( TQString host );
|
||||
int request( TQString host, bool userInitiated );
|
||||
void relinquish( TQString host );
|
||||
bool reportFailure( TQString host );
|
||||
/* TQString statusAsString();*/
|
||||
private:
|
||||
NetworkStatusModule * m_module;
|
||||
};
|
||||
|
||||
#endif
|
@ -1,156 +0,0 @@
|
||||
/*
|
||||
This file is part of kdepim.
|
||||
|
||||
Copyright (c) 2005 Will Stephenson <lists@stevello.free-online.co.uk>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; see the file COPYING.LIB. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <kapplication.h>
|
||||
#include <klocale.h>
|
||||
#include <kmessagebox.h>
|
||||
#include <kstaticdeleter.h>
|
||||
|
||||
#include "clientiface_stub.h"
|
||||
#include "networkstatuscommon.h"
|
||||
|
||||
#include "connectionmanager.h"
|
||||
|
||||
// ConnectionManager's private parts
|
||||
class ConnectionManagerPrivate
|
||||
{
|
||||
public:
|
||||
// this holds the currently active state
|
||||
ConnectionManager::State m_state;
|
||||
ClientIface_stub * m_stub;
|
||||
bool m_userInitiatedOnly;
|
||||
};
|
||||
|
||||
// Connection manager itself
|
||||
ConnectionManager::ConnectionManager( TQObject * parent, const char * name ) : DCOPObject( "ConnectionManager" ),TQObject( parent, name )
|
||||
{
|
||||
d = new ConnectionManagerPrivate;
|
||||
|
||||
d->m_stub = new ClientIface_stub( kapp->dcopClient(), "kded", "networkstatus" );
|
||||
|
||||
connectDCOPSignal( "kded", "networkstatus", "statusChange(TQString,int)", "slotStatusChanged(TQString,int)", false );
|
||||
d->m_userInitiatedOnly = false;
|
||||
initialise();
|
||||
}
|
||||
|
||||
ConnectionManager *ConnectionManager::s_self = 0L;
|
||||
|
||||
ConnectionManager *ConnectionManager::self()
|
||||
{
|
||||
static KStaticDeleter<ConnectionManager> deleter;
|
||||
if(!s_self)
|
||||
deleter.setObject( s_self, new ConnectionManager( 0, "connection_manager" ) );
|
||||
return s_self;
|
||||
}
|
||||
|
||||
void ConnectionManager::initialise()
|
||||
{
|
||||
// determine initial state and set the state object accordingly.
|
||||
d->m_state = Offline;
|
||||
updateStatus();
|
||||
}
|
||||
|
||||
void ConnectionManager::updateStatus()
|
||||
{
|
||||
/*NetworkStatus::EnumStatus daemonStatus = (NetworkStatus::EnumStatus)d->m_stub->status( TQString::null );
|
||||
switch ( daemonStatus )
|
||||
{
|
||||
case Offline:
|
||||
case OfflineFailed:
|
||||
case OfflineDisconnected:
|
||||
case ShuttingDown:
|
||||
if ( d->m_state == Online )
|
||||
d->m_state = Pending;
|
||||
else
|
||||
d->m_state = Offline;
|
||||
break;
|
||||
case Establishing:
|
||||
case Online:
|
||||
d->m_state = Online;
|
||||
break;
|
||||
case NoNetworks:
|
||||
case Unreachable:
|
||||
d->m_state = Inactive;
|
||||
break;
|
||||
}*/
|
||||
}
|
||||
|
||||
ConnectionManager::~ConnectionManager()
|
||||
{
|
||||
delete d;
|
||||
}
|
||||
|
||||
NetworkStatus::EnumStatus ConnectionManager::status( const TQString & host )
|
||||
{
|
||||
if ( d->m_state == Inactive )
|
||||
return NetworkStatus::NoNetworks;
|
||||
else
|
||||
return NetworkStatus::Offline;
|
||||
}
|
||||
NetworkStatus::EnumRequestResult ConnectionManager::requestConnection( TQWidget * mainWidget, const TQString & host, bool userInitiated )
|
||||
{
|
||||
NetworkStatus::EnumRequestResult result;
|
||||
// if offline and the user has previously indicated they didn't want any new connections, suppress it
|
||||
if ( d->m_state == Offline && !userInitiated && d->m_userInitiatedOnly )
|
||||
result = NetworkStatus::UserRefused;
|
||||
// if offline, ask the user whether this connection should be allowed
|
||||
if ( d->m_state == Offline )
|
||||
{
|
||||
if ( askToConnect( mainWidget ) )
|
||||
result = (NetworkStatus::EnumRequestResult)d->m_stub->request( host, userInitiated );
|
||||
else
|
||||
result = NetworkStatus::UserRefused;
|
||||
}
|
||||
// otherwise, just ask for the connection
|
||||
else
|
||||
result = (NetworkStatus::EnumRequestResult)d->m_stub->request( host, userInitiated );
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void ConnectionManager::relinquishConnection( const TQString & host )
|
||||
{
|
||||
d->m_stub->relinquish( host );
|
||||
}
|
||||
|
||||
void ConnectionManager::slotStatusChanged( TQString host, int status )
|
||||
{
|
||||
updateStatus();
|
||||
// reset user initiated only flag if we are now online
|
||||
if ( d->m_state == Online )
|
||||
d->m_userInitiatedOnly = false;
|
||||
|
||||
emit statusChanged( host, (NetworkStatus::EnumStatus)status );
|
||||
}
|
||||
|
||||
bool ConnectionManager::askToConnect( TQWidget * mainWidget )
|
||||
{
|
||||
i18n( "A network connection was disconnected. The application is now in offline mode. Do you want the application to resume network operations when the network is available again?" );
|
||||
i18n( "This application is currently in offline mode. Do you want to connect?" );
|
||||
i18n( "Message shown when a network connection failed. The placeholder contains the concrete description of the operation eg 'while performing this operation", "A network connection failed %1. Do you want to place the application in offline mode?" );
|
||||
return ( KMessageBox::questionYesNo( mainWidget,
|
||||
i18n("This application is currently in offline mode. Do you want to connect in order to carry out this operation?"),
|
||||
i18n("Leave Offline Mode?"),
|
||||
i18n("Connect"), i18n("Do Not Connect"),
|
||||
TQString::fromLatin1("OfflineModeAlwaysGoOnline") ) == KMessageBox::Yes );
|
||||
}
|
||||
|
||||
#include "connectionmanager.moc"
|
@ -1,57 +0,0 @@
|
||||
/*
|
||||
connectionmanager.h - Provides the client side interface to the kde networkstatus daemon
|
||||
|
||||
Copyright (c) 2004 by Will Stephenson <lists@stevello.free-online.co.uk>
|
||||
|
||||
*************************************************************************
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Lesser General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
*************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef KDE_CONNECTION_MANAGER_H
|
||||
#define KDE_CONNECTION_MANAGER_H
|
||||
|
||||
#include <dcopobject.h>
|
||||
|
||||
#include "networkstatuscommon.h"
|
||||
|
||||
class ConnectionManagerPrivate;
|
||||
|
||||
class ConnectionManager : public TQObject, virtual public DCOPObject
|
||||
{
|
||||
Q_OBJECT
|
||||
K_DCOP
|
||||
public:
|
||||
static ConnectionManager* self();
|
||||
enum State { Inactive, Online, Offline, Pending };
|
||||
virtual ~ConnectionManager();
|
||||
NetworkStatus::EnumStatus status( const TQString & host );
|
||||
// check if a hostname is available. Ask user if offline. Request host
|
||||
NetworkStatus::EnumRequestResult requestConnection( TQWidget* mainWidget, const TQString & host, bool userInitiated );
|
||||
// method to relinquish a connection
|
||||
void relinquishConnection( const TQString & host );
|
||||
signals:
|
||||
// signal that the network for a hostname is up/down
|
||||
void statusChanged( const TQString & host, NetworkStatus::EnumStatus status );
|
||||
protected:
|
||||
// sets up internal state
|
||||
void initialise();
|
||||
// reread the desktop status from the daemon and update internal state
|
||||
void updateStatus();
|
||||
// ask if the user would like to reconnect
|
||||
bool askToConnect( TQWidget * mainWidget );
|
||||
k_dcop:
|
||||
void slotStatusChanged( TQString host, int status );
|
||||
private:
|
||||
ConnectionManager( TQObject *parent, const char * name );
|
||||
ConnectionManagerPrivate *d;
|
||||
static ConnectionManager * s_self;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -1,93 +0,0 @@
|
||||
/*
|
||||
This file is part of kdepim.
|
||||
|
||||
Copyright (c) 2005 Will Stephenson <lists@stevello.free-online.co.uk>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; see the file COPYING.LIB. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <kdebug.h>
|
||||
|
||||
#include "network.h"
|
||||
|
||||
Network::Network( const TQString name, NetworkStatus::Properties properties )
|
||||
: m_name( name )
|
||||
{
|
||||
kdDebug() << k_funcinfo << "constructing network '" << name << "', status: " << properties.status << endl;
|
||||
m_status = properties.status;
|
||||
m_netmasks = properties.netmasks;
|
||||
m_internet = properties.internet;
|
||||
m_service = properties.service;
|
||||
m_onDemandPolicy = properties.onDemandPolicy;
|
||||
}
|
||||
|
||||
NetworkStatus::EnumStatus Network::reachabilityFor( const TQString & host )
|
||||
{
|
||||
// initially assume all networks are internet
|
||||
// TODO: compute reachability properly
|
||||
Q_UNUSED( host );
|
||||
if ( true /*nss.properties.internet && notPrivateNetwork( host )*/ )
|
||||
{
|
||||
NetworkStatus::EnumStatus status;
|
||||
if ( m_status == NetworkStatus::Establishing || m_status == NetworkStatus::Online )
|
||||
status = NetworkStatus::Online;
|
||||
else if ( m_status == NetworkStatus::ShuttingDown || m_status == NetworkStatus::Offline )
|
||||
status = NetworkStatus::Offline;
|
||||
else
|
||||
status = m_status;
|
||||
|
||||
return status;
|
||||
}
|
||||
}
|
||||
|
||||
void Network::registerUsage( const TQCString appId, const TQString host )
|
||||
{
|
||||
NetworkUsageStruct nus;
|
||||
nus.appId = appId;
|
||||
nus.host = host;
|
||||
NetworkUsageList::iterator end = m_usage.end();
|
||||
for ( NetworkUsageList::iterator it = m_usage.begin(); it != end; ++it )
|
||||
{
|
||||
if ( (*it).appId == appId && (*it).host == host )
|
||||
return;
|
||||
}
|
||||
kdDebug() << k_funcinfo << "registering " << appId << " as using network " << m_name << " for " << host << endl;
|
||||
m_usage.append( nus );
|
||||
}
|
||||
|
||||
void Network::unregisterUsage( const TQCString appId, const TQString host )
|
||||
{
|
||||
NetworkUsageList::iterator end = m_usage.end();
|
||||
for ( NetworkUsageList::iterator it = m_usage.begin(); it != end; ++it )
|
||||
{
|
||||
if ( (*it).appId == appId && (*it).host == host )
|
||||
{
|
||||
kdDebug() << k_funcinfo << "unregistering " << appId << "'s usage of " << m_name << " for " << host << endl;
|
||||
m_usage.remove( it );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Network::setStatus( NetworkStatus::EnumStatus status )
|
||||
{
|
||||
m_status = status;
|
||||
}
|
||||
|
||||
void Network::removeAllUsage()
|
||||
{
|
||||
m_usage.clear();
|
||||
}
|
@ -1,67 +0,0 @@
|
||||
/*
|
||||
This file is part of kdepim.
|
||||
|
||||
Copyright (c) 2005 Will Stephenson <lists@stevello.free-online.co.uk>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; see the file COPYING.LIB. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef NETWORKSTATUS_NETWORK_H
|
||||
#define NETWORKSTATUS_NETWORK_H
|
||||
|
||||
#include <tqstringlist.h>
|
||||
#include <ksharedptr.h>
|
||||
#include "networkstatuscommon.h"
|
||||
|
||||
struct NetworkUsageStruct
|
||||
{
|
||||
TQCString appId;
|
||||
TQString host;
|
||||
};
|
||||
|
||||
typedef TQValueList< NetworkUsageStruct > NetworkUsageList;
|
||||
|
||||
class Network
|
||||
{
|
||||
public:
|
||||
Network( const TQString name, NetworkStatus::Properties properties );
|
||||
Network( const Network & other );
|
||||
NetworkStatus::EnumStatus reachabilityFor( const TQString & host );
|
||||
void registerUsage( const TQCString appId, const TQString host );
|
||||
void unregisterUsage( const TQCString appId, const TQString host );
|
||||
void setStatus( NetworkStatus::EnumStatus status );
|
||||
|
||||
void removeAllUsage();
|
||||
|
||||
NetworkStatus::EnumStatus status() { return m_status; }
|
||||
TQString name() { return m_name; }
|
||||
bool internet() { return m_internet; }
|
||||
TQStringList netmasks() { return m_netmasks; }
|
||||
TQCString service() { return m_service; }
|
||||
NetworkStatus::EnumOnDemandPolicy onDemandPolicy() { return m_onDemandPolicy; }
|
||||
NetworkUsageList usage() { return m_usage; }
|
||||
|
||||
private:
|
||||
NetworkStatus::EnumStatus m_status;
|
||||
TQString m_name;
|
||||
bool m_internet;
|
||||
TQStringList m_netmasks;
|
||||
TQCString m_service;
|
||||
NetworkStatus::EnumOnDemandPolicy m_onDemandPolicy;
|
||||
NetworkUsageList m_usage;
|
||||
};
|
||||
|
||||
#endif
|
@ -1,307 +0,0 @@
|
||||
/*
|
||||
This file is part of kdepim.
|
||||
|
||||
Copyright (c) 2005 Will Stephenson <lists@stevello.free-online.co.uk>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; see the file COPYING.LIB. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include "networkstatus.h"
|
||||
|
||||
#include <tqdict.h>
|
||||
#include <tqtimer.h>
|
||||
#include <tqvaluelist.h>
|
||||
|
||||
#include <dcopclient.h>
|
||||
#include <kapplication.h>
|
||||
#include <kdebug.h>
|
||||
|
||||
#include "clientifaceimpl.h"
|
||||
#include "serviceifaceimpl.h"
|
||||
#include "network.h"
|
||||
#include <kdepimmacros.h>
|
||||
|
||||
extern "C" {
|
||||
KDE_EXPORT KDEDModule* create_networkstatus( const TQCString& obj )
|
||||
{
|
||||
return new NetworkStatusModule( obj );
|
||||
}
|
||||
}
|
||||
|
||||
// INTERNALLY USED STRUCTS AND TYPEDEFS
|
||||
|
||||
//typedef TQDict< Network > NetworkList;
|
||||
typedef TQValueList< Network * > NetworkList;
|
||||
|
||||
class NetworkStatusModule::Private
|
||||
{
|
||||
public:
|
||||
NetworkList networks;
|
||||
/* ClientIface * clientIface;
|
||||
ServiceIface * serviceIface;*/
|
||||
};
|
||||
|
||||
// CTORS/DTORS
|
||||
|
||||
NetworkStatusModule::NetworkStatusModule( const TQCString & obj ) : KDEDModule( obj )
|
||||
{
|
||||
d = new Private;
|
||||
/* d->clientIface = new ClientIfaceImpl( this );
|
||||
d->serviceIface = new ServiceIfaceImpl( this );*/
|
||||
connect( kapp->dcopClient(), TQT_SIGNAL( applicationRemoved( const TQCString& ) ) , this, TQT_SLOT( unregisteredFromDCOP( const TQCString& ) ) );
|
||||
connect( kapp->dcopClient(), TQT_SIGNAL( applicationRegistered( const TQCString& ) ) , this, TQT_SLOT( registeredToDCOP( const TQCString& ) ) );
|
||||
}
|
||||
|
||||
NetworkStatusModule::~NetworkStatusModule()
|
||||
{
|
||||
/* delete d->clientIface;
|
||||
delete d->serviceIface;*/
|
||||
delete d;
|
||||
}
|
||||
|
||||
// CLIENT INTERFACE
|
||||
|
||||
TQStringList NetworkStatusModule::networks()
|
||||
{
|
||||
kdDebug() << k_funcinfo << " contains " << d->networks.count() << " networks" << endl;
|
||||
TQStringList networks;
|
||||
NetworkList::iterator end = d->networks.end();
|
||||
NetworkList::iterator it = d->networks.begin();
|
||||
for ( ; it != end; ++it )
|
||||
networks.append( (*it)->name() );
|
||||
return networks;
|
||||
}
|
||||
|
||||
int NetworkStatusModule::status( const TQString & host )
|
||||
{
|
||||
if ( host == "127.0.0.1" || host == "localhost" )
|
||||
return NetworkStatus::Online;
|
||||
Network * p = networkForHost( host );
|
||||
if ( !p )
|
||||
{
|
||||
//kdDebug() << k_funcinfo << " no networks have status for host '" << host << "'" << endl;
|
||||
return (int)NetworkStatus::NoNetworks;
|
||||
}
|
||||
else
|
||||
{
|
||||
kdDebug() << k_funcinfo << " got status for host '" << host << "' : " << (int)(p->status()) << endl;
|
||||
return (int)(p->status());
|
||||
}
|
||||
}
|
||||
|
||||
int NetworkStatusModule::request( const TQString & host, bool userInitiated )
|
||||
{
|
||||
// identify most suitable network for host
|
||||
Network * p = networkForHost( host );
|
||||
if ( !p )
|
||||
return NetworkStatus::Unavailable;
|
||||
|
||||
NetworkStatus::EnumStatus status = p->status();
|
||||
TQCString appId = kapp->dcopClient()->senderId();
|
||||
if ( status == NetworkStatus::Online )
|
||||
{
|
||||
p->registerUsage( appId, host );
|
||||
return NetworkStatus::Connected;
|
||||
}
|
||||
// if online
|
||||
// register usage
|
||||
// return Available
|
||||
else if ( status == NetworkStatus::Establishing )
|
||||
{
|
||||
p->registerUsage( appId, host );
|
||||
return NetworkStatus::RequestAccepted;
|
||||
}
|
||||
// if establishing
|
||||
// register usage
|
||||
// return Accepted
|
||||
else if ( status == NetworkStatus::Offline || status == NetworkStatus::ShuttingDown )
|
||||
{
|
||||
// TODO: check on demand policy
|
||||
|
||||
p->registerUsage( appId, host );
|
||||
return NetworkStatus::RequestAccepted;
|
||||
}
|
||||
// if offline or ShuttingDown
|
||||
// check ODP::
|
||||
// always or Permanent: register, return accepted
|
||||
// user: check userInitiated, register, return Accepted or UserRefused
|
||||
// never: return UserRefused
|
||||
else if ( status == NetworkStatus::OfflineFailed )
|
||||
{
|
||||
// TODO: check user's preference for dealing with failed networks
|
||||
p->registerUsage( appId, host );
|
||||
return NetworkStatus::RequestAccepted;
|
||||
}
|
||||
// if OfflineFailed
|
||||
// check user's preference
|
||||
else if ( status == NetworkStatus::OfflineDisconnected )
|
||||
{
|
||||
return NetworkStatus::Unavailable;
|
||||
}
|
||||
else
|
||||
return NetworkStatus::Unavailable;
|
||||
// if OfflineDisconnected or NoNetworks
|
||||
// return Unavailable
|
||||
}
|
||||
|
||||
void NetworkStatusModule::relinquish( const TQString & host )
|
||||
{
|
||||
TQCString appId = kapp->dcopClient()->senderId();
|
||||
// find network currently used by app for host...
|
||||
NetworkList::iterator end = d->networks.end();
|
||||
NetworkList::iterator it = d->networks.begin();
|
||||
for ( ; it != end; ++it )
|
||||
{
|
||||
Network * net = *it;
|
||||
NetworkUsageList usage = net->usage();
|
||||
NetworkUsageList::iterator end2 = usage.end();
|
||||
for ( NetworkUsageList::iterator usageIt = usage.begin(); usageIt != end2; ++usageIt )
|
||||
{
|
||||
if ( (*usageIt).appId == appId && (*usageIt).host == host )
|
||||
{
|
||||
// remove host usage record
|
||||
usage.remove( usageIt );
|
||||
// if requested shutdown flagged for network
|
||||
// check if all hosts have relinquished
|
||||
// call confirmShutDown on Service
|
||||
//checkShutdownOk();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool NetworkStatusModule::reportFailure( const TQString & host )
|
||||
{
|
||||
// find network for host
|
||||
// check IP record. remove IP usage record. if other IP exists, return true.
|
||||
Q_UNUSED( host );
|
||||
kdDebug() << k_funcinfo << "NOT IMPLEMENTED" << endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
// PROTECTED UTILITY FUNCTIONS
|
||||
/*
|
||||
* Determine the network to use for the supplied host
|
||||
*/
|
||||
Network * NetworkStatusModule::networkForHost( const TQString & host ) const
|
||||
{
|
||||
// return a null pointer if no networks are registered
|
||||
if ( d->networks.isEmpty() )
|
||||
return 0;
|
||||
|
||||
NetworkList::const_iterator it = d->networks.begin();
|
||||
Network * bestNetwork = *(it++);
|
||||
NetworkList::const_iterator end = d->networks.end();
|
||||
for ( ; it != end; ++it )
|
||||
{
|
||||
if ( (*it)->reachabilityFor( host ) > bestNetwork->reachabilityFor( host ) )
|
||||
{
|
||||
bestNetwork = (*it);
|
||||
}
|
||||
}
|
||||
return bestNetwork;
|
||||
}
|
||||
|
||||
|
||||
void NetworkStatusModule::registeredToDCOP( const TQCString & appId )
|
||||
{
|
||||
}
|
||||
|
||||
void NetworkStatusModule::unregisteredFromDCOP( const TQCString & appId )
|
||||
{
|
||||
// unregister any networks owned by a service that has just unregistered
|
||||
NetworkList::iterator it = d->networks.begin();
|
||||
NetworkList::iterator end = d->networks.end();
|
||||
for ( ; it != end; ++it )
|
||||
{
|
||||
if ( (*it)->service() == appId)
|
||||
{
|
||||
kdDebug() << k_funcinfo << "removing '" << (*it)->name() << "', registered by " << appId << endl;
|
||||
d->networks.remove( it );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// SERVICE INTERFACE //
|
||||
void NetworkStatusModule::setNetworkStatus( const TQString & networkName, int st )
|
||||
{
|
||||
kdDebug() << k_funcinfo << endl;
|
||||
NetworkStatus::EnumStatus status = (NetworkStatus::EnumStatus)st;
|
||||
Network * net = 0;
|
||||
NetworkList::iterator it = d->networks.begin();
|
||||
NetworkList::iterator end = d->networks.end();
|
||||
for ( ; it != end; ++it )
|
||||
{
|
||||
if ( (*it)->name() == networkName )
|
||||
{
|
||||
net = (*it);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ( net )
|
||||
{
|
||||
if ( net->status() == status )
|
||||
return;
|
||||
|
||||
// update the status of the network
|
||||
net->setStatus( status );
|
||||
|
||||
// notify for each host in use on that network
|
||||
NetworkUsageList usage = net->usage();
|
||||
NetworkUsageList::iterator end = usage.end();
|
||||
TQStringList notified;
|
||||
for ( NetworkUsageList::iterator it = usage.begin(); it != end; ++it )
|
||||
{
|
||||
// only notify once per host
|
||||
if ( !notified.contains( (*it).host ) )
|
||||
{
|
||||
kdDebug() << "notifying statusChange of " << networkName << " to " << (int)status <<
|
||||
" because " << (*it).appId << " is using " << (*it).host << endl;
|
||||
/*d->clientIface->*/statusChange( (*it).host, (int)status );
|
||||
notified.append( (*it).host );
|
||||
}
|
||||
}
|
||||
|
||||
// if we are now anything but Establishing or Online, reset the usage records for that network
|
||||
if ( !( net->status() == NetworkStatus::Establishing || net->status() == NetworkStatus::Establishing ) )
|
||||
net->removeAllUsage();
|
||||
}
|
||||
else
|
||||
kdDebug() << k_funcinfo << "No network found by this name" << endl;
|
||||
}
|
||||
|
||||
void NetworkStatusModule::registerNetwork( const TQString & networkName, const NetworkStatus::Properties properties )
|
||||
{
|
||||
kdDebug() << k_funcinfo << "registering '" << networkName << "', with status " << properties.status << endl;
|
||||
// TODO: check for re-registration, checking appid matches
|
||||
|
||||
d->networks.append( new Network( networkName, properties ) );
|
||||
}
|
||||
|
||||
void NetworkStatusModule::unregisterNetwork( const TQString & networkName )
|
||||
{
|
||||
// TODO: check appid
|
||||
//d->networks.remove( networkName );
|
||||
}
|
||||
|
||||
void NetworkStatusModule::requestShutdown( const TQString & networkName )
|
||||
{
|
||||
Q_UNUSED( networkName );
|
||||
kdDebug() << k_funcinfo << "NOT IMPLEMENTED" << endl;
|
||||
}
|
||||
|
||||
#include "networkstatus.moc"
|
@ -1,80 +0,0 @@
|
||||
/*
|
||||
This file is part of kdepim.
|
||||
|
||||
Copyright (c) 2005 Will Stephenson <lists@stevello.free-online.co.uk>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; see the file COPYING.LIB. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef KDED_NETWORKSTATUS_H
|
||||
#define KDED_NETWORKSTATUS_H
|
||||
|
||||
#include "networkstatuscommon.h"
|
||||
|
||||
#include <kdedmodule.h>
|
||||
|
||||
#include "clientiface.h"
|
||||
#include "network.h"
|
||||
#include "serviceiface.h"
|
||||
|
||||
struct NetworkStatusStruct;
|
||||
|
||||
class NetworkStatusModule : virtual public KDEDModule/*, public ClientIface, ServiceIface*/ // <-spot the multiple inheritance pb
|
||||
{
|
||||
Q_OBJECT
|
||||
K_DCOP
|
||||
public:
|
||||
NetworkStatusModule( const TQCString & obj );
|
||||
~NetworkStatusModule();
|
||||
k_dcop:
|
||||
// Client interface
|
||||
TQStringList networks();
|
||||
int status( const TQString & host );
|
||||
int request( const TQString & host, bool userInitiated );
|
||||
void relinquish( const TQString & host );
|
||||
bool reportFailure( const TQString & host );
|
||||
// TQString statusAsString();
|
||||
// Service interface
|
||||
void setNetworkStatus( const TQString & networkName, int status );
|
||||
void registerNetwork( const TQString & networkName, NetworkStatus::Properties properties );
|
||||
void unregisterNetwork( const TQString & networkName );
|
||||
void requestShutdown( const TQString & networkName );
|
||||
k_dcop_signals:
|
||||
/**
|
||||
* A status change occurred for the network(s) used to connect to the given host.
|
||||
* @param host The host which the application has indicated it is using
|
||||
* @param status The new status of the network used to reach host.
|
||||
*/
|
||||
void statusChange( TQString host, int status );
|
||||
/**
|
||||
* The network would like to shut down - any clients using this host are to finish using it immediately and call
|
||||
* relinquish() when done.
|
||||
* @param host The host, registered as in use by applications, which is about to be disconnected.
|
||||
*/
|
||||
void shutdownRequested( TQString host );
|
||||
protected slots:
|
||||
void registeredToDCOP( const TQCString& appId );
|
||||
void unregisteredFromDCOP( const TQCString& appId );
|
||||
|
||||
protected:
|
||||
// TQStringList networkUsers( const TQString & networkName );
|
||||
Network * networkForHost( const TQString & host ) const;
|
||||
|
||||
private:
|
||||
class Private;
|
||||
Private *d;
|
||||
};
|
||||
#endif
|
@ -1,108 +0,0 @@
|
||||
<?xml version = '1.0'?>
|
||||
<kdevelop>
|
||||
<general>
|
||||
<author>Will Stephenson</author>
|
||||
<email>wstephenson@suse.de</email>
|
||||
<version>$VERSION$</version>
|
||||
<projectmanagement>KDevKDEAutoProject</projectmanagement>
|
||||
<primarylanguage>C++</primarylanguage>
|
||||
<keywords>
|
||||
<keyword>Qt</keyword>
|
||||
<keyword>KDE</keyword>
|
||||
</keywords>
|
||||
</general>
|
||||
<kdevfileview>
|
||||
<groups>
|
||||
<group pattern="*.cpp;*.cxx;*.h" name="Sources" />
|
||||
<group pattern="*.ui" name="User Interface" />
|
||||
<group pattern="*.png" name="Icons" />
|
||||
<group pattern="*.po;*.ts" name="Translations" />
|
||||
<group pattern="*" name="Others" />
|
||||
<hidenonprojectfiles>false</hidenonprojectfiles>
|
||||
<hidenonlocation>false</hidenonlocation>
|
||||
</groups>
|
||||
<tree>
|
||||
<hidepatterns>*.o,*.lo,CVS</hidepatterns>
|
||||
<hidenonprojectfiles>false</hidenonprojectfiles>
|
||||
</tree>
|
||||
</kdevfileview>
|
||||
<kdevdoctreeview>
|
||||
<ignoretocs>
|
||||
<toc>ada</toc>
|
||||
<toc>ada_bugs_gcc</toc>
|
||||
<toc>bash</toc>
|
||||
<toc>bash_bugs</toc>
|
||||
<toc>clanlib</toc>
|
||||
<toc>fortran_bugs_gcc</toc>
|
||||
<toc>gnome1</toc>
|
||||
<toc>gnustep</toc>
|
||||
<toc>gtk</toc>
|
||||
<toc>gtk_bugs</toc>
|
||||
<toc>haskell</toc>
|
||||
<toc>haskell_bugs_ghc</toc>
|
||||
<toc>java_bugs_gcc</toc>
|
||||
<toc>java_bugs_sun</toc>
|
||||
<toc>opengl</toc>
|
||||
<toc>pascal_bugs_fp</toc>
|
||||
<toc>php</toc>
|
||||
<toc>php_bugs</toc>
|
||||
<toc>perl</toc>
|
||||
<toc>perl_bugs</toc>
|
||||
<toc>python</toc>
|
||||
<toc>python_bugs</toc>
|
||||
<toc>ruby</toc>
|
||||
<toc>ruby_bugs</toc>
|
||||
<toc>sdl</toc>
|
||||
<toc>stl</toc>
|
||||
<toc>sw</toc>
|
||||
<toc>w3c-dom-level2-html</toc>
|
||||
<toc>w3c-svg</toc>
|
||||
<toc>w3c-uaag10</toc>
|
||||
<toc>wxwidgets_bugs</toc>
|
||||
</ignoretocs>
|
||||
<ignoreqt_xml>
|
||||
<toc>qmake User Guide</toc>
|
||||
</ignoreqt_xml>
|
||||
</kdevdoctreeview>
|
||||
<kdevdebugger>
|
||||
<general>
|
||||
<dbgshell>libtool</dbgshell>
|
||||
</general>
|
||||
</kdevdebugger>
|
||||
<kdevfilecreate>
|
||||
<useglobaltypes>
|
||||
<type ext="ui" />
|
||||
<type ext="cpp" />
|
||||
<type ext="h" />
|
||||
</useglobaltypes>
|
||||
</kdevfilecreate>
|
||||
<kdevautoproject>
|
||||
<make>
|
||||
<envvars>
|
||||
<envvar value="1" name="WANT_AUTOCONF_2_5" />
|
||||
<envvar value="1" name="WANT_AUTOMAKE_1_6" />
|
||||
</envvars>
|
||||
</make>
|
||||
<run>
|
||||
<directoryradio>executable</directoryradio>
|
||||
</run>
|
||||
<general>
|
||||
<activetarget>kded_networkstatus.la</activetarget>
|
||||
</general>
|
||||
</kdevautoproject>
|
||||
<kdevcppsupport>
|
||||
<references/>
|
||||
<codecompletion>
|
||||
<includeGlobalFunctions>true</includeGlobalFunctions>
|
||||
<includeTypes>true</includeTypes>
|
||||
<includeEnums>true</includeEnums>
|
||||
<includeTypedefs>false</includeTypedefs>
|
||||
<automaticCodeCompletion>true</automaticCodeCompletion>
|
||||
<automaticArgumentsHint>true</automaticArgumentsHint>
|
||||
<automaticHeaderCompletion>true</automaticHeaderCompletion>
|
||||
<codeCompletionDelay>250</codeCompletionDelay>
|
||||
<argumentsHintDelay>400</argumentsHintDelay>
|
||||
<headerCompletionDelay>250</headerCompletionDelay>
|
||||
</codecompletion>
|
||||
</kdevcppsupport>
|
||||
</kdevelop>
|
@ -1,53 +0,0 @@
|
||||
/*
|
||||
This file is part of kdepim.
|
||||
|
||||
Copyright (c) 2005 Will Stephenson <lists@stevello.free-online.co.uk>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; see the file COPYING.LIB. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include "networkstatuscommon.h"
|
||||
#include <kdebug.h>
|
||||
|
||||
TQDataStream & operator<< ( TQDataStream & s, const NetworkStatus::Properties p )
|
||||
{
|
||||
kdDebug() << k_funcinfo << "status is: " << (int)p.status << endl;
|
||||
s << (int)p.status;
|
||||
s << (int)p.onDemandPolicy;
|
||||
s << p.service;
|
||||
s << ( p.internet ? 1 : 0 );
|
||||
s << p.netmasks;
|
||||
return s;
|
||||
}
|
||||
|
||||
TQDataStream & operator>> ( TQDataStream & s, NetworkStatus::Properties &p )
|
||||
{
|
||||
int status, onDemandPolicy, internet;
|
||||
s >> status;
|
||||
kdDebug() << k_funcinfo << "status is: " << status << endl;
|
||||
p.status = ( NetworkStatus::EnumStatus )status;
|
||||
s >> onDemandPolicy;
|
||||
p.onDemandPolicy = ( NetworkStatus::EnumOnDemandPolicy )onDemandPolicy;
|
||||
s >> p.service;
|
||||
s >> internet;
|
||||
if ( internet )
|
||||
p.internet = true;
|
||||
else
|
||||
p.internet = false;
|
||||
s >> p.netmasks;
|
||||
kdDebug() << k_funcinfo << "enum converted status is: " << p.status << endl;
|
||||
return s;
|
||||
}
|
@ -1,54 +0,0 @@
|
||||
/*
|
||||
This file is part of kdepim.
|
||||
|
||||
Copyright (c) 2005 Will Stephenson <lists@stevello.free-online.co.uk>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; see the file COPYING.LIB. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef NETWORKSTATUS_COMMON_H
|
||||
#define NETWORKSTATUS_COMMON_H
|
||||
|
||||
#include <tqstringlist.h>
|
||||
|
||||
namespace NetworkStatus
|
||||
{
|
||||
enum EnumStatus { NoNetworks = 1, Unreachable, OfflineDisconnected, OfflineFailed, ShuttingDown, Offline, Establishing, Online };
|
||||
enum EnumRequestResult { RequestAccepted = 1, Connected, UserRefused, Unavailable };
|
||||
enum EnumOnDemandPolicy { All, User, None, Permanent };
|
||||
struct Properties
|
||||
{
|
||||
TQString name;
|
||||
// status of the network
|
||||
EnumStatus status;
|
||||
// policy for on-demand usage as defined by the service
|
||||
EnumOnDemandPolicy onDemandPolicy;
|
||||
// identifier for the service
|
||||
TQCString service;
|
||||
// indicate that the connection is to 'the internet' - similar to default gateway in routing
|
||||
bool internet;
|
||||
// list of netmasks that the network connects to - overridden by above internet
|
||||
TQStringList netmasks;
|
||||
// for future expansion consider
|
||||
// EnumChargingModel - FlatRate, TimeCharge, VolumeCharged
|
||||
// EnumLinkStatus - for WLANs - VPOOR, POOR, AVERAGE, GOOD, EXCELLENT
|
||||
};
|
||||
}
|
||||
|
||||
TQDataStream & operator>> ( TQDataStream & s, NetworkStatus::Properties &p );
|
||||
TQDataStream & operator<< ( TQDataStream & s, const NetworkStatus::Properties p );
|
||||
|
||||
#endif
|
@ -1,42 +0,0 @@
|
||||
/*
|
||||
This file is part of kdepim.
|
||||
|
||||
Copyright (c) 2005 Will Stephenson <lists@stevello.free-online.co.uk>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; see the file COPYING.LIB. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef NETWORKSTATUS_PROVIDERIFACE_H
|
||||
#define NETWORKSTATUS_PROVIDERIFACE_H
|
||||
|
||||
#include <dcopobject.h>
|
||||
class ProviderIface : virtual public DCOPObject
|
||||
{
|
||||
K_DCOP
|
||||
k_dcop:
|
||||
/** @return NetworkStatus::EnumOnlineStatus */
|
||||
virtual int status( const TQString & network ) = 0;
|
||||
/** @return NetworkStatus::EnumRequestResult */
|
||||
virtual int establish( const TQString & network ) = 0;
|
||||
/** @return NetworkStatus::EnumRequestResult */
|
||||
virtual int shutdown( const TQString & network ) = 0;
|
||||
/** fake a failure - go directly to failed */
|
||||
virtual void simulateFailure() = 0;
|
||||
/** fake a network disconnect - go directly to offlinedisconnected */
|
||||
virtual void simulateDisconnect() = 0;
|
||||
};
|
||||
|
||||
#endif
|
@ -1,51 +0,0 @@
|
||||
/*
|
||||
This file is part of kdepim.
|
||||
|
||||
Copyright (c) 2005 Will Stephenson <lists@stevello.free-online.co.uk>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; see the file COPYING.LIB. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef KDED_NETWORKSTATUS_SERVICEIFACE_H
|
||||
#define KDED_NETWORKSTATUS_SERVICEIFACE_H
|
||||
|
||||
#include "networkstatuscommon.h"
|
||||
|
||||
#include <dcopobject.h>
|
||||
|
||||
class ServiceIface : virtual public DCOPObject
|
||||
{
|
||||
K_DCOP
|
||||
k_dcop:
|
||||
/** Change the status for the given network */
|
||||
virtual void setNetworkStatus( const TQString & networkName, int status ) = 0;
|
||||
/** Register or update the properties for a network
|
||||
NB Check that people don't use this to change status */
|
||||
virtual void registerNetwork( const TQString & networkName, NetworkStatus::Properties properties ) = 0;
|
||||
/**
|
||||
* Indicate that this service is no longer administering the named network
|
||||
* TODO: Work out the implications to clients of unregistering a network
|
||||
* - maybe this method needs more parameters to give them a clue.
|
||||
*/
|
||||
virtual void unregisterNetwork( const TQString & networkName ) = 0;
|
||||
/**
|
||||
* Tell the daemon that the service would like to shut down this network connection,
|
||||
* and to notify clients using it so they can stop using it in a controlled manner
|
||||
*/
|
||||
virtual void requestShutdown( const TQString & networkName ) = 0;
|
||||
};
|
||||
|
||||
#endif
|
@ -1,46 +0,0 @@
|
||||
/*
|
||||
This file is part of kdepim.
|
||||
|
||||
Copyright (c) 2005 Will Stephenson <lists@stevello.free-online.co.uk>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; see the file COPYING.LIB. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include "serviceifaceimpl.h"
|
||||
|
||||
ServiceIfaceImpl::ServiceIfaceImpl( NetworkStatusModule * module ) : m_module ( module )
|
||||
{
|
||||
}
|
||||
|
||||
void ServiceIfaceImpl::setStatus( TQString networkName, int status )
|
||||
{
|
||||
m_module->setStatus( networkName, (NetworkStatus::EnumStatus)status );
|
||||
}
|
||||
|
||||
void ServiceIfaceImpl::registerNetwork( TQString networkName, NetworkStatus::Properties properties )
|
||||
{
|
||||
m_module->registerNetwork( networkName, properties );
|
||||
}
|
||||
|
||||
void ServiceIfaceImpl::unregisterNetwork( TQString networkName )
|
||||
{
|
||||
m_module->unregisterNetwork( networkName );
|
||||
}
|
||||
|
||||
void ServiceIfaceImpl::requestShutdown( TQString networkName )
|
||||
{
|
||||
m_module->requestShutdown( networkName );
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
/*
|
||||
This file is part of kdepim.
|
||||
|
||||
Copyright (c) 2005 Will Stephenson <lists@stevello.free-online.co.uk>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; see the file COPYING.LIB. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef NETWORKSTATUS_SERVICEIFACEIMPL_H
|
||||
#define NETWORKSTATUS_SERVICEIFACEIMPL_H
|
||||
|
||||
#include "networkstatus.h"
|
||||
#include "serviceiface.h"
|
||||
|
||||
/**
|
||||
* Glue class linking DCOP skeleton to daemon
|
||||
*/
|
||||
class ServiceIfaceImpl : virtual public ServiceIface
|
||||
{
|
||||
public:
|
||||
ServiceIfaceImpl( NetworkStatusModule * module );
|
||||
void setStatus( TQString networkName, int status );
|
||||
void registerNetwork( TQString networkName, NetworkStatus::Properties properties );
|
||||
void unregisterNetwork( TQString networkName );
|
||||
void requestShutdown( TQString networkName );
|
||||
private:
|
||||
NetworkStatusModule * m_module;
|
||||
};
|
||||
|
||||
#endif
|
@ -1,101 +0,0 @@
|
||||
/*
|
||||
This file is part of kdepim.
|
||||
|
||||
Copyright (c) 2005 Will Stephenson <lists@stevello.free-online.co.uk>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; see the file COPYING.LIB. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <tqtimer.h>
|
||||
#include <dcopclient.h>
|
||||
#include <kapplication.h>
|
||||
#include "provideriface.h"
|
||||
|
||||
#include "testservice.h"
|
||||
#include "serviceiface_stub.h"
|
||||
|
||||
TestService::TestService() : TQObject(), DCOPObject("ProviderIface")
|
||||
{
|
||||
kapp->dcopClient()->registerAs("testservice" );
|
||||
m_service = new ServiceIface_stub( "kded", "networkstatus" );
|
||||
m_status = NetworkStatus::Offline;
|
||||
NetworkStatus::Properties nsp;
|
||||
nsp.internet = true;
|
||||
nsp.name = "test_net";
|
||||
nsp.onDemandPolicy = NetworkStatus::All;
|
||||
nsp.service = kapp->dcopClient()->appId();
|
||||
nsp.status = m_status;
|
||||
m_service->registerNetwork( "test_net", nsp );
|
||||
}
|
||||
|
||||
TestService::~TestService()
|
||||
{
|
||||
delete m_service;
|
||||
}
|
||||
|
||||
int TestService::status( const TQString & network )
|
||||
{
|
||||
Q_UNUSED( network );
|
||||
return (int)m_status;
|
||||
}
|
||||
|
||||
int TestService::establish( const TQString & network )
|
||||
{
|
||||
Q_UNUSED( network );
|
||||
m_status = NetworkStatus::Establishing;
|
||||
m_service->setNetworkStatus( "test_net", (int)m_status );
|
||||
m_nextStatus = NetworkStatus::Online;
|
||||
TQTimer::singleShot( 5000, this, TQT_SLOT( slotStatusChange() ) );
|
||||
return (int)NetworkStatus::RequestAccepted;
|
||||
}
|
||||
|
||||
int TestService::shutdown( const TQString & network )
|
||||
{
|
||||
Q_UNUSED( network );
|
||||
m_status = NetworkStatus::ShuttingDown;
|
||||
m_service->setNetworkStatus( "test_net", (int)m_status );
|
||||
m_nextStatus = NetworkStatus::Offline;
|
||||
TQTimer::singleShot( 5000, this, TQT_SLOT( slotStatusChange() ) );
|
||||
return (int)NetworkStatus::RequestAccepted;
|
||||
}
|
||||
|
||||
void TestService::simulateFailure()
|
||||
{
|
||||
m_status = NetworkStatus::OfflineFailed;
|
||||
m_service->setNetworkStatus( "test_net", (int)m_status );
|
||||
}
|
||||
|
||||
void TestService::simulateDisconnect()
|
||||
{
|
||||
m_status = NetworkStatus::OfflineDisconnected;
|
||||
m_service->setNetworkStatus( "test_net", (int)m_status );
|
||||
}
|
||||
|
||||
void TestService::slotStatusChange()
|
||||
{
|
||||
m_status = m_nextStatus;
|
||||
m_service->setNetworkStatus( "test_net", (int)m_status );
|
||||
}
|
||||
|
||||
int main( int argc, char** argv )
|
||||
{
|
||||
KApplication app(argc, argv, "testdcop");
|
||||
TestService * test = new TestService;
|
||||
Q_UNUSED( test );
|
||||
return app.exec();
|
||||
}
|
||||
|
||||
#include "testservice.moc"
|
@ -1,49 +0,0 @@
|
||||
/*
|
||||
This file is part of kdepim.
|
||||
|
||||
Copyright (c) 2005 Will Stephenson <lists@stevello.free-online.co.uk>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; see the file COPYING.LIB. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef _TEST_NETWORKSTATUS_SERVICE_H
|
||||
#define _TEST_NETWORKSTATUS_SERVICE_H
|
||||
|
||||
#include "networkstatuscommon.h"
|
||||
#include "provideriface.h"
|
||||
|
||||
class ServiceIface_stub;
|
||||
|
||||
class TestService : virtual public TQObject, ProviderIface
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
TestService();
|
||||
virtual ~TestService();
|
||||
int status( const TQString & network );
|
||||
int establish( const TQString & network );
|
||||
int shutdown( const TQString & network );
|
||||
void simulateFailure();
|
||||
void simulateDisconnect();
|
||||
protected slots:
|
||||
void slotStatusChange();
|
||||
private:
|
||||
ServiceIface_stub * m_service;
|
||||
NetworkStatus::EnumStatus m_status;
|
||||
NetworkStatus::EnumStatus m_nextStatus;
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Reference in new issue