JS8Call-Improved master
Loading...
Searching...
No Matches
MessageServer.h
1#ifndef MESSAGESERVER_H
2#define MESSAGESERVER_H
3
4#include "Message.h"
5
6#include <QAbstractSocket>
7#include <QList>
8#include <QScopedPointer>
9#include <QTcpServer>
10#include <QTcpSocket>
11
12class Client;
13
14class MessageServer : public QTcpServer {
15 Q_OBJECT
16 public:
17 explicit MessageServer(QObject *parent = 0);
18 virtual ~MessageServer();
19
20 protected:
21 int activeConnections();
22 void pruneConnections();
23 void incomingConnection(qintptr handle);
24
25 signals:
26 void message(Message const &message);
27 void error(QString const &) const;
28
29 public slots:
30 void setServer(QString host, quint16 port = 2442);
31 void setPause(bool paused);
32 bool start();
33 void stop();
34 void setMaxConnections(int n);
35 void setServerHost(const QString &host) { setServer(host, m_port); }
36 void setServerPort(quint16 port) { setServer(m_host, port); }
37 void send(Message const &message);
38
39 private:
40 bool m_paused;
41 QString m_host;
42 quint16 m_port;
43 int m_maxConnections;
44
45 QList<Client *> m_clients;
46};
47
48class Client : public QObject {
49 Q_OBJECT
50 public:
51 explicit Client(MessageServer *server, QObject *parent = 0);
52
53 bool isConnected() const { return m_connected; }
54 void setSocket(qintptr handle);
55 void send(const Message &message);
56 void close();
57 bool awaitingResponse(qint64 id) {
58 return id <= 0 || m_requests.contains(id);
59 }
60 signals:
61
62 public slots:
63 void setConnected(bool connected);
64 void onDisconnected();
65 void readyRead();
66
67 private:
68 QMap<qint64, Message> m_requests;
69 MessageServer *m_server;
70 QTcpSocket *m_socket;
71 bool m_connected;
72};
73
74#endif // MESSAGESERVER_H
Definition MessageServer.h:48
Definition MessageServer.h:14
Definition Message.h:16
Definition qpriorityqueue.h:39