From 309947a4316a94f4c5d43c9b39b733cc3bbab459 Mon Sep 17 00:00:00 2001 From: Javier Date: Wed, 16 Dec 2015 02:10:10 +0100 Subject: implement session termination requests --- sapsocket.cc | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'sapsocket.cc') diff --git a/sapsocket.cc b/sapsocket.cc index e7376d9..e9a69ec 100644 --- a/sapsocket.cc +++ b/sapsocket.cc @@ -6,10 +6,11 @@ #include "sapsocket.h" #define DELAYED_ACK_TIME 1000 +#define WINDOW_SIZE_MSGS 10 SAPSocket::SAPSocket(SAPConnection *conn, int sessionId, const SAPChannelInfo &chanInfo) : QObject(conn), _sessionId(sessionId), _info(chanInfo), _open(false), - _outLastSeqNum(0), _inLastSeqNum(0), _inLastAck(0) + _outLastSeqNum(0), _outLastAck(0), _inLastSeqNum(0), _inLastAck(0) { } @@ -56,13 +57,23 @@ bool SAPSocket::send(const QByteArray &data) return false; } + if (data.size() > 65000) { + qWarning() << "Fragmentation is not yet supported"; + return false; + } + + if (_out.size() > WINDOW_SIZE_MSGS) { + // Send buffer is not empty; enqueue + // TODO Realiability + } + frame.withSeqNum = isWithSeqNum(); if (isReliable()) { frame.seqNum = ++_outLastSeqNum; } else { frame.seqNum = 0; } - frame.unk_1 = 0; + frame.unk_1 = 0; // Is this related to fragmentation? frame.data = data; peer()->writeDataToSession(_sessionId, SAProtocol::packDataFrame(frame)); -- cgit v1.2.3