DynamicAggregationBuffer¶
Usage
use DynamicAggregationBuffer;
Dynamic aggregator that will hold all buffers to be sent until explicitly requested by the user. This avoids the need to have to handle sending partial data when it is not needed to make progress. This comes with the issue that if no explicit flush is called, data never gets sent, but it opens the possibility of the user creating their own background progress task.
-
proc
UninitializedDynamicAggregator
(type msgType)¶
-
record
DynamicAggregator
¶ -
type
msgType
¶
-
var
pid
= -1¶
-
var
instance
: unmanaged nilable DynamicAggregatorImpl(msgType)¶
-
proc
init
(type msgType)¶
-
proc
init
(type msgType, instance: unmanaged nilable DynamicAggregatorImpl(msgType), pid: int)
-
proc
init=
(other)¶
-
proc
destroy
()¶
-
proc
isInitialized
()¶
-
proc
_value
¶
-
type
-
class
DynamicBuffer
¶ -
type
msgType
¶
-
var
dom
= {0..-1}¶
-
var
arr
: [dom] msgType¶
-
var
lock
: atomicbool¶
-
proc
acquire
()¶
-
proc
release
()¶
-
proc
append
(buf)¶
-
proc
getArray
()¶
-
proc
done
()¶
-
proc
size
¶
-
type
-
class
DynamicAggregatorImpl
¶ -
type
msgType
¶
-
var
pid
: int¶
-
var
agg
= UninitializedAggregator(msgType)¶
-
var
dynamicDestBuffers
: [LocaleSpace] unmanaged DynamicBuffer(msgType)¶
-
proc
init
(type msgType)¶
-
proc
init
(other, pid: int)
-
proc
deinit
()¶
-
proc
dsiPrivatize
(pid)¶
-
proc
dsiGetPrivatizeData
()¶
-
proc
getPrivatizedInstance
()¶
-
proc
size
()¶
-
proc
aggregate
(msg: msgType, loc: locale): void¶
-
proc
aggregate
(msg: msgType, locid: int): void
-
iter
flushLocal
(): (unmanaged DynamicBuffer(msgType), locale)¶
-
iter
flushLocal
(param tag: iterKind)
-
iter
flushGlobal
(): (unmanaged DynamicBuffer(msgType), locale)¶
-
iter
flushGlobal
(param tag: iterKind): (unmanaged DynamicBuffer(msgType), locale)
-
type