kmessageserver.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __KMESSAGESERVER_H__
00021 #define __KMESSAGESERVER_H__
00022
00023 #include <qobject.h>
00024 #include <qserversocket.h>
00025 #include <qstring.h>
00026 #include <qvaluelist.h>
00027
00028 class KMessageIO;
00029 class KMessageServerPrivate;
00030
00175 class KMessageServer : public QObject
00176 {
00177 Q_OBJECT
00178
00179 public:
00183 enum {
00184 REQ_BROADCAST = 1,
00185 REQ_FORWARD,
00186 REQ_CLIENT_ID,
00187 REQ_ADMIN_ID,
00188 REQ_ADMIN_CHANGE,
00189 REQ_REMOVE_CLIENT,
00190 REQ_MAX_NUM_CLIENTS,
00191 REQ_CLIENT_LIST,
00192 REQ_MAX_REQ = 0xffff };
00193
00197 enum {
00198 MSG_BROADCAST = 101,
00199 MSG_FORWARD,
00200 ANS_CLIENT_ID,
00201 ANS_ADMIN_ID,
00202 ANS_CLIENT_LIST,
00203 EVNT_CLIENT_CONNECTED,
00204 EVNT_CLIENT_DISCONNECTED,
00205 EVNT_MAX_EVNT = 0xffff
00206 };
00207
00211 KMessageServer(Q_UINT16 cookie = 42, QObject* parent = 0);
00212
00213 ~KMessageServer();
00214
00218 virtual void Debug();
00219
00220
00221
00229 bool initNetwork (Q_UINT16 port = 0);
00230
00237 Q_UINT16 serverPort () const;
00238
00244 void stopNetwork();
00245
00250 bool isOfferingConnections() const;
00251
00252
00253
00254 public slots:
00268 void addClient (KMessageIO *);
00269
00281 void removeClient (KMessageIO *io, bool broken);
00282
00286 void deleteClients();
00287
00288 private slots:
00295 void removeBrokenClient ();
00296
00297 public:
00309 void setMaxClients(int maxnumber);
00310
00316 int maxClients() const;
00317
00323 int clientCount() const;
00324
00328 QValueList <Q_UINT32> clientIDs() const;
00329
00335 KMessageIO *findClient (Q_UINT32 no) const;
00336
00343 Q_UINT32 adminID() const;
00344
00350 void setAdmin (Q_UINT32 adminID);
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372 public:
00378 virtual void broadcastMessage (const QByteArray &msg);
00379
00388 virtual void sendMessage (Q_UINT32 id, const QByteArray &msg);
00389
00397 virtual void sendMessage (const QValueList <Q_UINT32> &ids, const QByteArray &msg);
00398
00399 protected slots:
00409 virtual void getReceivedMessage (const QByteArray &msg);
00410
00419 virtual void processOneMessage ();
00420
00421
00422
00423 signals:
00428 void clientConnected (KMessageIO *client);
00429
00437 void connectionLost (KMessageIO *client);
00438
00451 void messageReceived (const QByteArray &data, Q_UINT32 clientID, bool &unknown);
00452
00453 protected:
00459 Q_UINT32 uniqueClientNumber() const;
00460
00461 private:
00462 KMessageServerPrivate* d;
00463 };
00464
00465
00476 class KMessageServerSocket : public QServerSocket
00477 {
00478 Q_OBJECT
00479
00480 public:
00481 KMessageServerSocket (Q_UINT16 port, QObject *parent = 0);
00482 ~KMessageServerSocket ();
00483
00484 void newConnection (int socket);
00485
00486 signals:
00487 void newClientConnected (KMessageIO *client);
00488 };
00489
00490
00491
00492 #endif
|