//
//     Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
//     Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
//     may also apply


//                 Generated by preSip
//            module kio  version KDE 3.5.3


// This software is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation; either version 2 of
// the License, or (at your option) any later version.
//
// This software is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public
// License along with this library; see the file COPYING.
// If not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

namespace TDEIO
{

class Scheduler : TQObject, DCOPObject
{
%TypeHeaderCode
#include <scheduler.h>
%End


public:
//ig     typedef TQPtrList<TDEIO::SimpleJob> JobList;
    static void          doJob (TDEIO::SimpleJob*);
    static void          scheduleJob (TDEIO::SimpleJob*);
    static void          cancelJob (TDEIO::SimpleJob*);
    static void          jobFinished (TDEIO::SimpleJob*, TDEIO::Slave*);
    static void          putSlaveOnHold (TDEIO::SimpleJob*, const KURL&);
    static void          removeSlaveOnHold ();
    static void          publishSlaveOnHold ();
//doc
// There is no default value for config (KIO.MetaData) - pass an
// empty Python dict if you need the default value
//end
    static TDEIO::Slave*   getConnectedSlave (const KURL&, const TDEIO::MetaData&);
    static bool          assignJobToSlave (TDEIO::Slave*, TDEIO::SimpleJob*);
    static bool          disconnectSlave (TDEIO::Slave*);

%If ( KDE_3_1_0 -  )
    static void          registerWindow (TQWidget*);

%If ( KDE_3_2_0 -  )
    static void          unregisterWindow (TQObject*);
%End

%End

    static bool          connect (const char*, const TQObject*, const char*);
    static bool          connect (const TQObject*, const char*, const TQObject*, const char*);
    static bool          disconnect (const TQObject*, const char*, const TQObject*, const char*);
    bool                 connect (const TQObject*, const char*, const char*);
    static void          checkSlaveOnHold (bool);
    void                 debug_info ();
    virtual bool         process (const TQCString&, const TQByteArray&, TQCString&, TQByteArray&);
    virtual QCStringList functions ();

public slots:
    void                 slotSlaveDied (TDEIO::Slave*);
    void                 slotSlaveStatus (pid_t, const TQCString&, const TQString&, bool);

signals:
    void                 slaveConnected (TDEIO::Slave*);
    void                 slaveError (TDEIO::Slave*, int, const TQString&);

protected:
    void                 setupSlave (TDEIO::Slave*, const KURL&, const TQString&, const TQString&, bool, const TDEIO::MetaData* = 0);
//ig     bool                 startJobScheduled (TDEIO::Scheduler::ProtocolInfo*);
    bool                 startJobDirect ();
                         Scheduler ();

protected slots:
    void                 startStep ();
    void                 slotCleanIdleSlaves ();
    void                 slotSlaveConnected ();
    void                 slotSlaveError (int, const TQString&);
    void                 slotScheduleCoSlave ();

%If ( KDE_3_1_0 -  )
    void                 slotUnregisterWindow (TQObject*);
%End


private:
                         Scheduler (const TDEIO::Scheduler&);

protected:
//igx     virtual void         virtual_hook (int, void*);

};  // class Scheduler

};  // namespace TDEIO

