20 #include <QWebSocketServer>
33 class SocketConnection : public QObject
38 typedef QPointer<SocketConnection> pointer;
39 typedef QMap<int, TextSegment::pointer> segment_map_type;
40 typedef segment_map_type::iterator segment_map_iterator;
43 SocketConnection(Settings *settings, Service *service, QWebSocket *socket);
44 virtual ~SocketConnection();
47 TextSegmentList::pointer segment_list();
48 void insert_sentence(QString sstring, QString tstring,
49 quint32 previous_crc, quint32 next_crc,
50 QByteArray json = QByteArray());
54 void send_message(QString const &message);
55 void send_message(QJsonObject const &json);
57 void set_edit_mode(bool edit_mode);
59 void save_sentence(TextSentence::pointer sentence);
60 void remove_sentence(TextSentence::pointer sentence);
62 void sentence_found(sentence_data_type result,
63 TextSentence::pointer sentence);
64 void sentence_inserted(TextSentence::pointer sentence);
71 void changeEditMode(bool edit_mode);
72 void changeLanguage();
75 void set_segment(int segment_id, QString html);
77 void do_edit_segment(QJsonObject const &json);
78 void do_focus(QJsonObject const &json);
79 void do_blur(QJsonObject const &json);
80 void do_load(QJsonObject const &json);
81 void do_load_segment(QJsonObject const &json);
83 Text::pointer to_text(HtmlRange range) const;
84 TextSegment::pointer find_segment(int segment_id);
85 void insert_segment(int segment_id, TextSegment::pointer segment);
88 void onTextMessageReceived(QString const &message);
89 void onBinaryMessageReceived(QByteArray const &message);
95 TextSegmentList::pointer m_segments; // スレッドを渡るため、共有ポインタの必要がある。
99 class SocketServer : public QObject
103 SocketServer(Settings *settings, Service* service, QObject *parent);
106 quint16 port() const;
112 void onNewConnection();
113 void onDisconnected();
116 void attachConnections(QWebSocket* socket);
117 void detachConnections(QWebSocket* socket);
121 Settings *m_settings;
124 QWebSocketServer *m_server;
125 QList<QWebSocket*> m_sockets;
128 Q_DECLARE_METATYPE(SocketConnection::pointer)