summaryrefslogtreecommitdiffstats
path: root/libksirtet/lib/types.h
diff options
context:
space:
mode:
Diffstat (limited to 'libksirtet/lib/types.h')
-rw-r--r--libksirtet/lib/types.h197
1 files changed, 197 insertions, 0 deletions
diff --git a/libksirtet/lib/types.h b/libksirtet/lib/types.h
new file mode 100644
index 00000000..2ccdcba0
--- /dev/null
+++ b/libksirtet/lib/types.h
@@ -0,0 +1,197 @@
+#ifndef MTYPES_H
+#define MTYPES_H
+
+#include <qstring.h>
+#include <qbuffer.h>
+#include <qvaluelist.h>
+
+#include "miscui.h"
+
+
+/** Internal class : used for client identification. */
+class cId
+{
+ public:
+ cId() {}
+ cId(const QString &gameName, const QString &gameId);
+
+ enum State { Accepted, LibIdClash, GameNameClash, GameIdClash };
+ void check(const cId &id);
+ bool accepted() const { return state==Accepted; }
+ QString errorMessage(const cId &id) const;
+
+ friend QDataStream &operator << (QDataStream &s, const cId &id);
+ friend QDataStream &operator >> (QDataStream &s, cId &id);
+
+ private:
+ QString libId, gameName, gameId;
+ State state;
+};
+QDataStream &operator << (QDataStream &s, const cId &id);
+QDataStream &operator >> (QDataStream &s, cId &id);
+
+/** Flags used for the netmeeting. */
+enum MeetingMsgFlag
+ { IdFlag = 0, EndFlag, NewFlag, DelFlag, Mod_TextFlag, Mod_TypeFlag, Mod_OptFlag, PlayFlag };
+QDataStream &operator << (QDataStream &s, const MeetingMsgFlag &f);
+QDataStream &operator >> (QDataStream &s, MeetingMsgFlag &f);
+
+/** Internal class : used in netmeeting to transport text line. */
+class TextInfo
+{
+ public:
+ TextInfo() {}
+
+ uint i;
+ QString text;
+};
+QDataStream &operator << (QDataStream &s, const TextInfo &ti);
+QDataStream &operator >> (QDataStream &s, TextInfo &ti);
+
+/** Internal class : used in netmeeting to transport readiness status. */
+typedef struct {
+ uint i;
+ MeetingCheckBox::Type type;
+} TypeInfo;
+QDataStream &operator << (QDataStream &s, const MeetingCheckBox::Type &t);
+QDataStream &operator >> (QDataStream &s, MeetingCheckBox::Type &t);
+QDataStream &operator << (QDataStream &s, const TypeInfo &ti);
+QDataStream &operator >> (QDataStream &s, TypeInfo &ti);
+
+/* Internal class : store game data. */
+class BoardData
+{
+ public:
+ BoardData() {}
+
+ QString name;
+ PlayerComboBox::Type type;
+};
+QDataStream &operator <<(QDataStream &, const BoardData &);
+QDataStream &operator >>(QDataStream &, BoardData &);
+
+/* Internal class : store extended game data (used in netmeeting). */
+class ExtData
+{
+ public:
+ ExtData() {}
+ ExtData(const QValueList<BoardData> &_bds, const QString &_text,
+ MeetingCheckBox::Type _type)
+ : bds(_bds), text(_text), type(_type) {}
+
+ QValueList<BoardData> bds;
+ QString text;
+ MeetingCheckBox::Type type;
+};
+QDataStream &operator << (QDataStream &s, const ExtData &ed);
+QDataStream &operator >> (QDataStream &s, ExtData &ed);
+
+/* Internal class : store meeting line data (in netmeeting). */
+class MeetingLineData
+{
+ public:
+ MeetingLineData() {}
+
+ ExtData ed;
+ bool own;
+};
+QDataStream &operator << (QDataStream &s, const MeetingLineData &pld);
+QDataStream &operator >> (QDataStream &s, MeetingLineData &pld);
+
+/* Internal class : store remote host data. */
+class Socket;
+
+class RemoteHostData
+{
+ public:
+ RemoteHostData() : socket(0) {}
+
+ Socket *socket;
+ QValueList<BoardData> bds;
+};
+
+/* Internal class : store connection data (used by config. wizard). */
+class ConnectionData
+{
+ public:
+ ConnectionData() {}
+
+ bool network, server;
+ RemoteHostData rhd;
+};
+
+/** Flags used for network communication. */
+enum MetaFlag { MF_Ask = 0, MF_Data };
+QDataStream &operator << (QDataStream &s, const MetaFlag &f);
+QDataStream &operator >> (QDataStream &s, MetaFlag &f);
+
+/** Internal class : encapsulate read/write QBuffer. */
+class Stream : public QDataStream
+{
+ public:
+ Stream(int mode);
+
+ void clear();
+ void setArray(QByteArray a);
+
+ QByteArray buffer() const { return buf.buffer(); }
+ uint size() const { return buf.buffer().size(); }
+
+ protected:
+ QBuffer buf;
+
+ private:
+ int mode;
+};
+
+/** Internal class : encapsulate write QBuffer. */
+class WritingStream : public Stream
+{
+ public:
+ WritingStream() : Stream(IO_WriteOnly) {}
+};
+
+/** Internal class : encapsulate read QBuffer. */
+class ReadingStream : public Stream
+{
+ public:
+ ReadingStream() : Stream(IO_ReadOnly) {}
+
+ bool readOk();
+ void clearRead();
+};
+
+/** Internal class : include a @ref ReadingStream and a @ref WritingStream. */
+class IOBuffer
+{
+ public:
+ IOBuffer() {}
+
+ void writingToReading();
+
+ ReadingStream reading;
+ WritingStream writing;
+};
+
+/** Internal class : array of @ref IOBuffer. */
+class BufferArray
+{
+ public:
+ BufferArray() {}
+ BufferArray(uint nb) { resize(nb); }
+ ~BufferArray();
+
+ void resize(uint nb);
+
+ uint size() const { return a.size(); }
+ IOBuffer *operator [](uint i) const { return a[i]; }
+
+ private:
+ QMemArray<IOBuffer *> a;
+
+ void clear(uint nb);
+};
+QDataStream &operator <<(QDataStream &s, const BufferArray &b);
+QDataStream &operator >>(QDataStream &s, BufferArray &b);
+
+#endif // MTYPES_H