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( ...@@ -27,6 +27,7 @@ class ClientBacklogManager(
) : BacklogManager(session) { ) : BacklogManager(session) {
private val bufferQueue = CoroutineKeyedQueue<BacklogData.Buffer, QVariantList>() private val bufferQueue = CoroutineKeyedQueue<BacklogData.Buffer, QVariantList>()
private val bufferFilteredQueue = CoroutineKeyedQueue<BacklogData.BufferFiltered, QVariantList>() private val bufferFilteredQueue = CoroutineKeyedQueue<BacklogData.BufferFiltered, QVariantList>()
private val bufferForwardQueue = CoroutineKeyedQueue<BacklogData.BufferForward, QVariantList>()
private val allQueue = CoroutineKeyedQueue<BacklogData.All, QVariantList>() private val allQueue = CoroutineKeyedQueue<BacklogData.All, QVariantList>()
private val allFilteredQueue = CoroutineKeyedQueue<BacklogData.AllFiltered, QVariantList>() private val allFilteredQueue = CoroutineKeyedQueue<BacklogData.AllFiltered, QVariantList>()
...@@ -54,6 +55,18 @@ class ClientBacklogManager( ...@@ -54,6 +55,18 @@ class ClientBacklogManager(
return bufferFilteredQueue.wait(BacklogData.BufferFiltered(bufferId, first, last, limit, additional, type, flags)) 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( suspend fun backlogAll(
first: MsgId = MsgId(-1), first: MsgId = MsgId(-1),
last: MsgId = MsgId(-1), last: MsgId = MsgId(-1),
...@@ -177,6 +190,15 @@ class ClientBacklogManager( ...@@ -177,6 +190,15 @@ class ClientBacklogManager(
val flags: MessageFlags = MessageFlag.all val flags: MessageFlags = MessageFlag.all
) : BacklogData() ) : 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( data class All(
val first: MsgId = MsgId(-1), val first: MsgId = MsgId(-1),
val last: MsgId = MsgId(-1), val last: MsgId = MsgId(-1),
......
...@@ -130,7 +130,17 @@ enum class QuasselFeature { ...@@ -130,7 +130,17 @@ enum class QuasselFeature {
/** /**
* Support for dynamically updated core information * 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 * Get the standardized feature name
......
...@@ -64,6 +64,27 @@ interface BacklogManagerStub : SyncableStub { ...@@ -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) @SyncedCall(target = ProtocolSide.CORE)
fun requestBacklogAll( fun requestBacklogAll(
first: MsgId = MsgId(-1), first: MsgId = MsgId(-1),
...@@ -148,6 +169,29 @@ interface BacklogManagerStub : SyncableStub { ...@@ -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) @SyncedCall(target = ProtocolSide.CLIENT)
fun receiveBacklogAll( fun receiveBacklogAll(
first: MsgId = MsgId(-1), first: MsgId = MsgId(-1),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment