47 lines
1.5 KiB
Nim
47 lines
1.5 KiB
Nim
|
# * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
|
||
|
# http://www.apache.org/licenses/LICENSE-2.0)
|
||
|
# * MIT license ([LICENSE-MIT](LICENSE-MIT) or
|
||
|
# http://opensource.org/licenses/MIT)
|
||
|
# at your option. This file may not be copied, modified, or distributed
|
||
|
# except according to those terms.
|
||
|
|
||
|
{.push raises: [].}
|
||
|
|
||
|
import
|
||
|
chronos,
|
||
|
../../../sync_desc,
|
||
|
../../worker_desc
|
||
|
|
||
|
type
|
||
|
PlayVoidFutureCtxFn* = proc(
|
||
|
ctx: SnapCtxRef): Future[void] {.gcsafe, raises: [CatchableError].}
|
||
|
|
||
|
PlayVoidFutureBuddyFn* = proc(
|
||
|
buddy: SnapBuddyRef): Future[void] {.gcsafe, raises: [CatchableError].}
|
||
|
|
||
|
PlayBoolBuddyFn* = proc(
|
||
|
buddy: SnapBuddyRef, last: bool): bool {.gcsafe, raises: [CatchableError].}
|
||
|
|
||
|
PlaySyncSpecs* = ref object of RootRef
|
||
|
## Holds sync mode specs & methods for a particular sync state
|
||
|
pool*: PlayBoolBuddyFn
|
||
|
daemon*: PlayVoidFutureCtxFn
|
||
|
single*: PlayVoidFutureBuddyFn
|
||
|
multi*: PlayVoidFutureBuddyFn
|
||
|
|
||
|
# ------------------------------------------------------------------------------
|
||
|
# Public functions
|
||
|
# ------------------------------------------------------------------------------
|
||
|
|
||
|
proc playSyncSpecs*(ctx: SnapCtxRef): PlaySyncSpecs =
|
||
|
## Getter
|
||
|
ctx.pool.syncMode.tab[ctx.pool.syncMode.active].PlaySyncSpecs
|
||
|
|
||
|
proc `playMode=`*(ctx: SnapCtxRef; val: SnapSyncModeType) =
|
||
|
## Setter
|
||
|
ctx.pool.syncMode.active = val
|
||
|
|
||
|
# ------------------------------------------------------------------------------
|
||
|
# End
|
||
|
# ------------------------------------------------------------------------------
|