Skip to content
Snippets Groups Projects
Verified Commit ffc28fb7 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

feat: implement LoadBacklogForwards

parent ae94fb7c
No related branches found
No related tags found
No related merge requests found
......@@ -27,6 +27,7 @@ class ClientBacklogManager(
) : BacklogManager(session) {
private val bufferQueue = CoroutineKeyedQueue<BacklogData.Buffer, QVariantList>()
private val bufferFilteredQueue = CoroutineKeyedQueue<BacklogData.BufferFiltered, QVariantList>()
private val bufferForwardQueue = CoroutineKeyedQueue<BacklogData.BufferForward, QVariantList>()
private val allQueue = CoroutineKeyedQueue<BacklogData.All, QVariantList>()
private val allFilteredQueue = CoroutineKeyedQueue<BacklogData.AllFiltered, QVariantList>()
......@@ -54,6 +55,18 @@ class ClientBacklogManager(
return bufferFilteredQueue.wait(BacklogData.BufferFiltered(bufferId, first, last, limit, additional, type, flags))
}
suspend fun backlogForward(
bufferId: BufferId,
first: MsgId = MsgId(-1),
last: MsgId = MsgId(-1),
limit: Int = -1,
type: MessageTypes = MessageType.all,
flags: MessageFlags = MessageFlag.all
): QVariantList {
requestBacklogForward(bufferId, first, last, limit, type.toBits().toInt(), flags.toBits().toInt())
return bufferForwardQueue.wait(BacklogData.BufferForward(bufferId, first, last, limit, type, flags))
}
suspend fun backlogAll(
first: MsgId = MsgId(-1),
last: MsgId = MsgId(-1),
......@@ -177,6 +190,15 @@ class ClientBacklogManager(
val flags: MessageFlags = MessageFlag.all
) : BacklogData()
data class BufferForward(
val bufferId: BufferId,
val first: MsgId = MsgId(-1),
val last: MsgId = MsgId(-1),
val limit: Int = -1,
val type: MessageTypes = MessageType.all,
val flags: MessageFlags = MessageFlag.all
) : BacklogData()
data class All(
val first: MsgId = MsgId(-1),
val last: MsgId = MsgId(-1),
......
......@@ -130,7 +130,17 @@ enum class QuasselFeature {
/**
* Support for dynamically updated core information
*/
SyncedCoreInfo;
SyncedCoreInfo,
/**
* Support for loading backlog in ascending order, old to new
*/
LoadBacklogForwards,
/**
* Support for controlling what IRCv3 capabilities are skipped during negotiation
*/
SkipIrcCaps;
/**
* Get the standardized feature name
......
......@@ -64,6 +64,27 @@ interface BacklogManagerStub : SyncableStub {
)
}
@SyncedCall(target = ProtocolSide.CORE)
fun requestBacklogForward(
bufferId: BufferId,
first: MsgId = MsgId(-1),
last: MsgId = MsgId(-1),
limit: Int = -1,
type: Int = -1,
flags: Int = -1
) {
sync(
target = ProtocolSide.CORE,
"requestBacklogForward",
qVariant(bufferId, QuasselType.BufferId),
qVariant(first, QuasselType.MsgId),
qVariant(last, QuasselType.MsgId),
qVariant(limit, QtType.Int),
qVariant(type, QtType.Int),
qVariant(flags, QtType.Int),
)
}
@SyncedCall(target = ProtocolSide.CORE)
fun requestBacklogAll(
first: MsgId = MsgId(-1),
......@@ -148,6 +169,29 @@ interface BacklogManagerStub : SyncableStub {
)
}
@SyncedCall(target = ProtocolSide.CLIENT)
fun receiveBacklogForward(
bufferId: BufferId,
first: MsgId = MsgId(-1),
last: MsgId = MsgId(-1),
limit: Int = -1,
type: Int = -1,
flags: Int = -1,
messages: QVariantList
) {
sync(
target = ProtocolSide.CLIENT,
"receiveBacklogForward",
qVariant(bufferId, QuasselType.BufferId),
qVariant(first, QuasselType.MsgId),
qVariant(last, QuasselType.MsgId),
qVariant(limit, QtType.Int),
qVariant(type, QtType.Int),
qVariant(flags, QtType.Int),
qVariant(messages, QtType.QVariantList),
)
}
@SyncedCall(target = ProtocolSide.CLIENT)
fun receiveBacklogAll(
first: MsgId = MsgId(-1),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment