Removed networkstatus from pim as it is now a core library

git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1171620 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
v3.5.13-sru
tpearson 14 years ago
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,100 +0,0 @@
[Desktop Entry]
Name=Network Status Daemon
Name[af]=Netwerk status bediener
Name[ar]=مراقب القرص و التنفيذ لحالة الشبكة
Name[bg]=Демон за състояние на мрежата
Name[ca]=Dimoni de l'estat de la xarxa
Name[cs]=Démon stavu sítě
Name[da]=Netværkstatusdæmon
Name[de]=Überwachung des Netzwerkstatus
Name[el]=Δαίμονας κατάστασης δικτύου
Name[eo]=Retstat-demono
Name[es]=Daemon de estado de la red
Name[et]=Võrguoleku deemon
Name[eu]=Sarearen egoera deabrua
Name[fa]=شبح وضعیت شبکه
Name[fi]=Verkkotilan tarkkailija
Name[fr]=Suivi de l'état du réseau
Name[fy]=Netwurktastândaemon
Name[gl]=Daemon do Estado da Rede
Name[hu]=Hálózati állapotjelző szolgáltatás
Name[is]=Netstöðupúki
Name[it]=Demone dello stato della rete
Name[ja]=ネットワークステータスデーモン
Name[kk]=Желі күйінің қызметі
Name[km]=ដេមិន​ស្ថានភាព​បណ្ដាញ
Name[ko]=네트워크 상태 데몬
Name[lt]=Tinklo statuso tarnyba
Name[mk]=Даемон за мрежен статус
Name[ms]=Daemon Berstatus Rangkaian
Name[nb]=Statusnisse for nettverket
Name[nds]=Nettwarkstatus-Dämoon
Name[ne]=सञ्जाल स्थिति डेइमन
Name[nl]=Netwerkstatusdaemon
Name[nn]=Statusnisse for nettverket
Name[pl]=Usługa stanu sieci
Name[pt]=Servidor de Estado de Rede
Name[pt_BR]=Daemon de Status da Rede
Name[ru]=Служба состояния сети
Name[sk]=Daemon stavu siete
Name[sl]=Demon za omrežno stanje
Name[sr]=Демон за статус мреже
Name[sr@Latn]=Demon za status mreže
Name[sv]=Nätverksstatusdemon
Name[ta]=வலைப்பின்னல் நிலை டெமான்
Name[tr]=Ağ Durum İzleyici
Name[uk]=Демон стану мережі
Name[zh_CN]=网络状态守护程序
Name[zh_TW]=網路狀態守護程式
Comment=Tracks status of network interfaces and provides notification to applications using the network.
Comment[af]=Hou tred van die status van netwerk intervlakke en verskaf kennisgewings na programme wat die netwerk gebruik.
Comment[bg]=Следене на състоянието на мрежата и предаване на информацията на програмите, които имат нужда
Comment[ca]=Controla l'estat de les interfícies de xarxa i proporciona notificacions a les aplicacions que usen la xarxa.
Comment[cs]=Zjiš'tuje stav síťových rozhraní a upozorňuje v případě přístupu aplikací k síti.
Comment[da]=Sporer status af netværksgrænseflade og sørger for meddelelser til programmer der bruger netværket.
Comment[de]=Überprüft den Netzwerk-Status und benachrichtigt anfragende Anwendungen
Comment[el]=Παρακολουθεί την κατάσταση του δικτύου και παρέχει ειδοποιήσεις σε εφαρμογές που χρησιμοποιούν το δίκτυο.
Comment[es]=Sigue la pista de las interfaces de red y proporciona notificaciones a las aplicaciones que están usando la red.
Comment[et]=Jälgib võrguliideste olekut ja annab sellest võrgu vahendusel rakendustele teada.
Comment[eu]=Sare interfazeen egoera jarraitzen du eta sarea darabilten aplikazioei jakinarazten die.
Comment[fa]=وضعیت واسطهای شبکه را شیار داده و با استفاده از شبکه، برای کاربردها اخطار فراهم می‌کند.
Comment[fi]=Tarkkailee verkkoliitäntöjen tilaa ja varoittaa verkkoa käyttäviä sovelluksia.
Comment[fr]=Surveille l'état des interfaces réseaux et fournit des notifications aux applications qui utilisent le réseau
Comment[fy]=Hâldt de tastân by fan de Netwurkynterfaces en hâldt dêr de tapassings fan op de hichte.
Comment[gl]=Monitoriza o estado das interfaces de rede e fornece notificacións ás aplicacións que usen a rede.
Comment[hu]=Figyeli a hálózati csatolók állapotát és értesítési lehetőséget biztosít hálózati alkalmazások számára.
Comment[is]=Fylgist með stöðu netkorta og sendir tilkynningar til forrita sem nota netið.
Comment[it]=Controlla lo stato delle interfacce di rete e fornisce notifiche alle applicazioni che usano al rete.
Comment[ja]=ネットワークインターフェースの状態を追跡し、ネットワークを用いるアプリケーションに通知します
Comment[kk]=Желі интерфейстерінің күйін бақылап, желіні қолданатын бағдарламаларын құлақтандыру қызметі.
Comment[km]=តាមដាន​ស្ថានភាព​របស់​ចំណុច​ប្រទាក់​បណ្ដាញ ព្រម​ទាំង​ផ្ដល់​នូវ​ការ​ជូនដំណឹង​ទៅ​កម្មវិធី ដែល​ប្រើ​បណ្ដាញ ។
Comment[lt]=Seka tinklo sąsajų būseną ir informuoja apie jas programas, naudojančias tinklą
Comment[mk]=Го следи статусот на мрежните интерфејси и дава известувања на апликациите што ја користат мрежата.
Comment[ms]=Menjejak status antara muka rangkaian dan memberitahu aplikasi yang menggunakan rangkaian tersebut.
Comment[nb]=Overvåker status for nettverksgrensesnitt og varsler programmer som bruker nettverket.
Comment[nds]=Överwacht den Tostand vun Nettwark-Koppelsteden un sendt Narichten na Programmen, de dat Nettwark bruukt.
Comment[ne]=सञ्जाल इन्टरफेसको स्थिति ट्र्याक गर्दछ र सञ्जाल प्रयोग गरेर अनुप्रयोगमा जानकारी उपलब्ध गराउछ ।
Comment[nl]=Houdt de status bij van de netwerkinterfaces en houdt daar de toepassingen van op de hoogte.
Comment[nn]=Overvakar status for nettverksgrensesnitt og varslar program som brukar nettverket.
Comment[pl]=Śledzi stan interfejsów sieciowych i powiadamia programy używające sieci.
Comment[pt]=Vigia o estado das interfaces de rede e avisa as aplicações que utilizam a rede.
Comment[pt_BR]=Controla o status das interfaces de rede e fornece notificações para aplicativos utilizando a rede.
Comment[ru]=Служба отслеживания состояния сетевых интерфейсов и обращения приложений к сети.
Comment[sk]=Sleduje stav sieťových rozhraní a poskytuje upozornenia aplikáciám používajúcim sieť.
Comment[sl]=Sledi stanju omrežnim vmesnikom in omogoča obvestila programom, ki uporabljajo omrežje
Comment[sr]=Прати статус мрежних интерфејса и пружа обавештења програмима који користе мрежу.
Comment[sr@Latn]=Prati status mrežnih interfejsa i pruža obaveštenja programima koji koriste mrežu.
Comment[sv]=Bevakar status för nätverksgränssnitt och tillhandahåller underrättelser till program som använder nätverket.
Comment[ta]=வலைப்பின்னலைப் பயன்படுத்தி வலைப்பின்னல் இடைமுகங்களின் நிலையை கண்காணிக்கிறது மற்றும் பயன்பாடுகளுக்கு அறிவிப்பை வழங்குகிறது.
Comment[tr]=Ağ arayüzlerinin durmunu izler ve ağı kullanan uygulamalar için gereken uyarıları sağlar.
Comment[uk]=Слідкує за станом інтерфейсів мережі і сповіщає програми, які користуються мережею.
Comment[zh_CN]=跟踪网卡的状态并为应用程序提供使用网络的通知。
Comment[zh_TW]=追蹤網路介面的狀態,並提供使用網路的應用程式的通知。
Type=Service
ServiceTypes=KDEDModule
X-KDE-ModuleType=Library
X-KDE-Library=networkstatus
X-KDE-FactoryName=networkstatus
X-KDE-Kded-autoload=true
X-KDE-Kded-load-on-demand=true

@ -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…
Cancel
Save