Quassel IRC  Pre-Release
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros
message.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  * Copyright (C) 2005-2015 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 }