#pragma once
#include <utility>
+#include <vector>
#include <QHash>
#include <QSet>
#include "coreignorelistmanager.h"
#include "coreinfo.h"
#include "message.h"
+#include "metricsserver.h"
#include "peer.h"
#include "protocol.h"
#include "storage.h"
class InternalPeer;
class IrcParser;
class MessageEvent;
-class NetworkConnection;
class RemotePeer;
class SignalProxy;
struct NetworkInfo;
-class QScriptEngine;
-
class CoreSession : public QObject
{
Q_OBJECT
public:
CoreSession(UserId, bool restoreState, bool strictIdentEnabled, QObject* parent = nullptr);
- QList<BufferInfo> buffers() const;
+ std::vector<BufferInfo> buffers() const;
inline UserId user() const { return _user; }
CoreNetwork* network(NetworkId) const;
CoreIdentity* identity(IdentityId) const;
const QString strictCompliantIdent(const CoreIdentity* identity);
inline CoreNetworkConfig* networkConfig() const { return _networkConfig; }
- NetworkConnection* networkConnection(NetworkId) const;
Protocol::SessionState sessionState() const;
* @param[in] msg Away message, or blank to set unaway
* @param[in] skipFormatting If true, skip timestamp formatting codes (e.g. if already done)
*/
- void globalAway(const QString& msg = QString(), const bool skipFormatting = false);
+ void globalAway(const QString& msg = QString(), bool skipFormatting = false);
signals:
void initialized();
void displayMsg(Message message);
void displayStatusMsg(QString, QString);
- void scriptResult(QString result);
-
//! Identity has been created.
/** This signal is propagated to the clients to tell them that the given identity has been created.
* \param identity The new identity.
void removeClient(Peer* peer);
void recvStatusMsgFromServer(QString msg);
- void recvMessageFromServer(NetworkId networkId,
- Message::Type,
- BufferInfo::Type,
- const QString& target,
- const QString& text,
- const QString& sender = "",
- Message::Flags flags = Message::None);
+ void recvMessageFromServer(RawMessage msg);
void destroyNetwork(NetworkId);
- void scriptRequest(QString script);
-
void clientsConnected();
void clientsDisconnected();
void processMessages();
void loadSettings();
- void initScriptEngine();
/// Hook for converting events to the old displayMsg() handlers
Q_INVOKABLE void processMessageEvent(MessageEvent* event);
CtcpParser* _ctcpParser;
IrcParser* _ircParser;
- QScriptEngine* scriptEngine;
-
/**
* This method obtains the prefixes of the message's sender within a channel, by looking up their channelmodes, and
* processing them to prefixes based on the network's settings.
bool _processMessages;
CoreIgnoreListManager _ignoreListManager;
CoreHighlightRuleManager _highlightRuleManager;
+ MetricsServer* _metricsServer{nullptr};
+};
+
+struct NetworkInternalMessage
+{
+ Message::Type type;
+ BufferInfo::Type bufferType;
+ QString target;
+ QString text;
+ QString sender;
+ Message::Flags flags;
+ NetworkInternalMessage(Message::Type type,
+ BufferInfo::Type bufferType,
+ QString target,
+ QString text,
+ QString sender = "",
+ Message::Flags flags = Message::None)
+ : type(type)
+ , bufferType(bufferType)
+ , target(std::move(target))
+ , text(std::move(text))
+ , sender(std::move(sender))
+ , flags(flags)
+ {}
};
struct RawMessage
{
+ QDateTime timestamp;
NetworkId networkId;
Message::Type type;
BufferInfo::Type bufferType;
QString text;
QString sender;
Message::Flags flags;
- RawMessage(
- NetworkId networkId, Message::Type type, BufferInfo::Type bufferType, QString target, QString text, QString sender, Message::Flags flags)
- : networkId(networkId)
+
+ RawMessage(QDateTime timestamp,
+ NetworkId networkId,
+ Message::Type type,
+ BufferInfo::Type bufferType,
+ QString target,
+ QString text,
+ QString sender,
+ Message::Flags flags)
+ : timestamp(std::move(timestamp))
+ , networkId(networkId)
, type(type)
, bufferType(bufferType)
, target(std::move(target))
, sender(std::move(sender))
, flags(flags)
{}
+
+ RawMessage(NetworkId networkId,
+ const NetworkInternalMessage& msg)
+ : timestamp(QDateTime::currentDateTimeUtc())
+ , networkId(networkId)
+ , type(msg.type)
+ , bufferType(msg.bufferType)
+ , target(msg.target)
+ , text(msg.text)
+ , sender(msg.sender)
+ , flags(msg.flags)
+ {}
};