1 | /*************************************************************************** |
2 | * Copyright (C) 2005-2014 by the Quassel Project * |
3 | * devel@quassel-irc.org * |
4 | * * |
5 | * This program is free software; you can redistribute it and/or modify * |
6 | * it under the terms of the GNU General Public License as published by * |
7 | * the Free Software Foundation; either version 2 of the License, or * |
8 | * (at your option) version 3. * |
9 | * * |
10 | * This program is distributed in the hope that it will be useful, * |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
13 | * GNU General Public License for more details. * |
14 | * * |
15 | * You should have received a copy of the GNU General Public License * |
16 | * along with this program; if not, write to the * |
17 | * Free Software Foundation, Inc., * |
18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * |
19 | ***************************************************************************/ |
20 | |
21 | #include "message.h" |
22 | |
23 | #include "util.h" |
24 | |
25 | #include <QDataStream> |
26 | |
27 | Message::Message(const BufferInfo &bufferInfo, Type type, const QString &contents, const QString &sender, Flags flags) |
28 | : _timestamp(QDateTime::currentDateTime().toUTC()), |
29 | _bufferInfo(bufferInfo), |
30 | _contents(contents), |
31 | _sender(sender), |
32 | _type(type), |
33 | _flags(flags) |
34 | { |
35 | } |
36 | |
37 | |
38 | Message::Message(const QDateTime &ts, const BufferInfo &bufferInfo, Type type, const QString &contents, const QString &sender, Flags flags) |
39 | : _timestamp(ts), |
40 | _bufferInfo(bufferInfo), |
41 | _contents(contents), |
42 | _sender(sender), |
43 | _type(type), |
44 | _flags(flags) |
45 | { |
46 | } |
47 | |
48 | |
49 | QDataStream &operator<<(QDataStream &out, const Message &msg) |
50 | { |
51 | out << msg.msgId() << (quint32)msg.timestamp().toTime_t() << (quint32)msg.type() << (quint8)msg.flags() |
52 | << msg.bufferInfo() << msg.sender().toUtf8() << msg.contents().toUtf8(); |
53 | return out; |
54 | } |
55 | |
56 | |
57 | QDataStream &operator>>(QDataStream &in, Message &msg) |
58 | { |
59 | quint8 f; |
60 | quint32 t; |
61 | quint32 ts; |
62 | QByteArray s, m; |
63 | BufferInfo buf; |
64 | in >> msg._msgId >> ts >> t >> f >> buf >> s >> m; |
65 | msg._type = (Message::Type)t; |
66 | msg._flags = (Message::Flags)f; |
67 | msg._bufferInfo = buf; |
68 | msg._timestamp = QDateTime::fromTime_t(ts); |
69 | msg._sender = QString::fromUtf8(s); |
70 | msg._contents = QString::fromUtf8(m); |
71 | return in; |
72 | } |
73 | |
74 | |
75 | QDebug operator<<(QDebug dbg, const Message &msg) |
76 | { |
77 | dbg.nospace() << qPrintable(QString("Message(MsgId:" )) << msg.msgId() |
78 | << qPrintable(QString("," )) << msg.timestamp() |
79 | << qPrintable(QString(", Type:" )) << msg.type() |
80 | << qPrintable(QString(", Flags:" )) << msg.flags() << qPrintable(QString(")" )) |
81 | << msg.sender() << ":" << msg.contents(); |
82 | return dbg; |
83 | } |
84 | |