Files
qad/cd_utils/cdutils_core.h

75 lines
1.7 KiB
C++

#ifndef CDUTILS_CORE_H
#define CDUTILS_CORE_H
#include "cdutils_types.h"
#include "cdutils_protocol.h"
#include "piconnection.h"
#include "pidatatransfer.h"
namespace CDUtils {
class CDCore;
class __Core_Initializer__ {
public:
__Core_Initializer__();
~__Core_Initializer__();
static int count_;
static CDCore * __instance__;
};
class CDCore: public PIObject
{
PIOBJECT(CDUtils::CDCore)
friend class __Core_Initializer__;
public:
static CDCore * instance() {return __Core_Initializer__::__instance__;}
EVENT(K_Sended)
EVENT(K_SendFail)
EVENT(K_Received)
EVENT(K_ReceiveFail)
EVENT1(K_KeepNamesRequest, bool*, kn)
EVENT_HANDLER(void, K_Send);
EVENT_HANDLER(void, K_Request);
CDSection k_;
void k_write(PIIODevice * d);
void k_read(PIIODevice * d);
void k_parse(PIIODevice * d);
void k_update(PIIODevice * d);
PIString pultConfig() {return PIString(pult_config);}
PIString appConfig() {return PIString(app_config);}
void reinitConnection(const PIString & configuration);
bool inProgress() {return sendt.isRunning();}
private:
CDCore();
EVENT_HANDLER2(void, dataReceived, const PIString &, from, const PIByteArray &, data);
EVENT_HANDLER1(void, dtSendRequest, PIByteArray &, data);
EVENT_HANDLER1(void, dtReceiveFinished, bool, ok);
EVENT_HANDLER(void, sendThread);
void k_rec(const PIByteArray & data);
void x_rec(const PIByteArray & data);
void c_rec(const PIByteArray & data);
static const char app_config[], pult_config[];
PIConnection connection;
PIDataTransfer datatr;
PacketHeader wheader;
PIByteArray send_data;
PIThread sendt;
};
static __Core_Initializer__ __Core_initializer__;
}
#endif // CDUTILS_CORE_H