#ifndef PSKlient_H
#define PSKlient_H

#include "../LTSKlient.h"
#include <Array.h>
#include <Text.h>
#include <ReferenceCounting.h>
#include <Zeit.h>

using namespace Network;
using namespace Framework;

struct FileGroupInfo
{
    int id;
    Text name;
    Text status;
    Text path;
    int version;
};

struct FileInfo
{
    int id;
    Text path;
    int version;
    Text time;
};

class PSKlient : public LTSKlient
{
public:
    // Konstruktor
    PSKlient( const char *ip, int port );
    // Destruktor
    ~PSKlient();
    // nicht constant
    bool getDateiListe( int *systemAnzahl, Array< int > *dateiAnzahl, RCArray< Text > *systeme, RCArray< RCArray< Text > > *dateien );
    bool updateFertig();
    bool updateStarten( int dateiGruppeId );
    bool getFileGroupInfoList( Array< FileGroupInfo* > *list );
    bool getSystemInfoList( RCArray< ReferenceCounting< std::pair< int, Text > > > *list );
    bool getFileInfoList( int system, int group, RCArray< ReferenceCounting< FileInfo > > *list );
    bool getFileVersion( char *path, int system, int group, int *version );
    bool updateFile( const char *pfad, char status, Zeit *zLetzteÄnderung, int system, int gruppe );
    bool dateiGruppeUpdate( int gruppe );
    void abbruch();
    // Reference Counting
    virtual LTSKlient *getThis();
    virtual LTSKlient *release();
};

#endif