/* This file is part of Flowee
*
* Copyright (C) 2017 Nathan Osman
*
* 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.1 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.
*
* For the full copy of the License see
*/
#ifndef HTTPENGINE_QOBJECTHANDLER_P_H
#define HTTPENGINE_QOBJECTHANDLER_P_H
#include
#include
namespace HttpEngine
{
class Socket;
class QObjectHandler;
class QObjectHandlerPrivate : public QObject
{
Q_OBJECT
public:
explicit QObjectHandlerPrivate(QObjectHandler *handler);
// In order to invoke the slot, a "pointer" to it needs to be stored in a
// map that lets us look up information by method name
class Method {
public:
Method() {}
Method(QObject *receiver, const char *method, bool readAll)
: receiver(receiver), oldSlot(true), slot(method), readAll(readAll) {}
Method(QObject *receiver, QtPrivate::QSlotObjectBase *slotObj, bool readAll)
: receiver(receiver), oldSlot(false), slot(slotObj), readAll(readAll) {}
QObject *receiver;
bool oldSlot;
union slot{
slot() {}
slot(const char *method) : method(method) {}
slot(QtPrivate::QSlotObjectBase *slotObj) : slotObj(slotObj) {}
const char *method;
QtPrivate::QSlotObjectBase *slotObj;
} slot;
bool readAll;
};
void invokeSlot(Socket*socket, Method m);
QMap map;
private:
QObjectHandler *const q;
};
}
#endif