Safe Haskell | None |
---|---|
Language | Haskell2010 |
RON.Data.ORSet
Contents
Description
Observed-Remove Set (OR-Set)
Synopsis
- newtype ORSet a = ORSet [a]
- newtype ORSetItem a = ORSetItem UUID
- type ORSetMap k v = ORSet (k, v)
- newtype ORSetRep = ORSetRep (Map UUID Op)
- addRef :: (ReplicaClock m, MonadE m, MonadObjectState (ORSet a) m) => ObjectRef a -> m ()
- addValue :: (Replicated a, ReplicaClock m, MonadE m, MonadObjectState (ORSet a) m) => a -> m ()
- findAnyAlive :: (MonadE m, MonadObjectState (ORSet item) m) => m (Maybe (ORSetItem item))
- findAnyAlive' :: (MonadE m, MonadObjectState (ORSet item) m) => m (ORSetItem item)
- removeObjectIf :: (MonadE m, ReplicaClock m, MonadObjectState (ORSet a) m) => ObjectStateT a m Bool -> m ()
- removeRef :: (MonadE m, ReplicaClock m, MonadObjectState (ORSet a) m) => ObjectRef a -> m ()
- removeValue :: (ReplicatedAsPayload a, MonadE m, ReplicaClock m, MonadObjectState (ORSet a) m) => a -> m ()
- zoomItem :: MonadE m => ORSetItem item -> ObjectStateT item m a -> ObjectStateT (ORSet item) m a
- addFieldValue :: (Replicated a, ReplicaClock m, MonadE m, MonadObjectState struct m) => UUID -> a -> m ()
- assignField :: (Replicated a, ReplicaClock m, MonadE m, MonadObjectState struct m) => UUID -> Maybe a -> m ()
- getFieldObject :: (MonadE m, MonadObjectState struct m, ReplicatedAsObject a) => UUID -> m (Maybe (ObjectRef a))
- newStruct :: (MonadState StateFrame m, ReplicaClock m) => [(UUID, Instance Replicated)] -> m UUID
- removeFieldValue :: (MonadE m, MonadObjectState struct m, ReplicaClock m, ReplicatedAsPayload a) => UUID -> a -> m ()
- removeFieldValueIf :: (MonadE m, MonadObjectState struct m, ReplicaClock m, ReplicatedAsPayload a) => UUID -> (a -> m Bool) -> m ()
- viewField :: (MonadE m, MonadState StateFrame m, ReplicatedAsObject a) => UUID -> StateChunk ORSetRep -> m (Maybe a)
- viewFieldLWW :: (MonadE m, MonadState StateFrame m, Replicated a) => UUID -> StateChunk ORSetRep -> m (Maybe a)
- viewFieldMax :: (MonadE m, Ord a, ReplicatedAsPayload a) => UUID -> StateChunk ORSetRep -> m (Maybe a)
- viewFieldMin :: (MonadE m, Ord a, ReplicatedAsPayload a) => UUID -> StateChunk ORSetRep -> m (Maybe a)
- viewFieldSet :: (MonadE m, MonadState StateFrame m, Replicated a) => UUID -> StateChunk ORSetRep -> m [a]
- zoomFieldObject :: forall a field m struct. (MonadE m, ReplicaClock m, ReplicatedAsObject field, ReplicatedAsObject struct) => UUID -> ObjectStateT field m a -> ObjectStateT struct m a
Documentation
Type-directing wrapper for typed OR-Set.
Eq
instance is purely technical, it doesn't use Ord
, nor Hashable
,
so its result may be confusing.
Constructors
ORSet [a] |
Instances
Eq a => Eq (ORSet a) Source # | |
Show a => Show (ORSet a) Source # | |
Replicated a => ReplicatedAsObject (ORSet a) Source # | |
Defined in RON.Data.ORSet Methods newObject :: (ReplicaClock m, MonadState StateFrame m) => ORSet a -> m (ObjectRef (ORSet a)) Source # readObject :: (MonadE m, MonadObjectState (ORSet a) m) => m (ORSet a) Source # | |
Replicated a => Replicated (ORSet a) Source # | |
Defined in RON.Data.ORSet | |
type Rep (ORSet a) Source # | |
Defined in RON.Data.ORSet |
Reference to an item inside an ORSet
.
Untyped OR-Set. Implementation: a map from the itemKey to the original op. Each time a value is added, a new item=op is created. Deletion of a value replaces all its known items with tombstone ops.
Instances
Eq ORSetRep Source # | |
Show ORSetRep Source # | |
Semigroup ORSetRep Source # | |
Monoid ORSetRep Source # | |
Semilattice ORSetRep Source # | Laws:
1. Idempotent because |
Defined in RON.Data.ORSet | |
Reducible ORSetRep Source # | |
Defined in RON.Data.ORSet Methods reducibleOpType :: UUID Source # stateFromChunk :: [Op] -> ORSetRep Source # stateToChunk :: ORSetRep -> [Op] Source # applyPatches :: ORSetRep -> Unapplied -> (ORSetRep, Unapplied) Source # reduceUnappliedPatches :: Unapplied -> Unapplied Source # |
addRef :: (ReplicaClock m, MonadE m, MonadObjectState (ORSet a) m) => ObjectRef a -> m () Source #
addValue :: (Replicated a, ReplicaClock m, MonadE m, MonadObjectState (ORSet a) m) => a -> m () Source #
Encode a value and add a it to the OR-Set
findAnyAlive :: (MonadE m, MonadObjectState (ORSet item) m) => m (Maybe (ORSetItem item)) Source #
Find any alive item. If no alive item found, return Nothing
.
findAnyAlive' :: (MonadE m, MonadObjectState (ORSet item) m) => m (ORSetItem item) Source #
Find any alive item. If no alive item found, report an error.
removeObjectIf :: (MonadE m, ReplicaClock m, MonadObjectState (ORSet a) m) => ObjectStateT a m Bool -> m () Source #
removeRef :: (MonadE m, ReplicaClock m, MonadObjectState (ORSet a) m) => ObjectRef a -> m () Source #
Remove an object reference from the OR-Set
removeValue :: (ReplicatedAsPayload a, MonadE m, ReplicaClock m, MonadObjectState (ORSet a) m) => a -> m () Source #
Remove an atomic value from the OR-Set
zoomItem :: MonadE m => ORSetItem item -> ObjectStateT item m a -> ObjectStateT (ORSet item) m a Source #
Go from modification of the whole set to the modification of an item object.
struct_set
Arguments
:: (Replicated a, ReplicaClock m, MonadE m, MonadObjectState struct m) | |
=> UUID | Field name |
-> a | Value |
-> m () |
Arguments
:: (Replicated a, ReplicaClock m, MonadE m, MonadObjectState struct m) | |
=> UUID | Field name |
-> Maybe a | Value |
-> m () |
Assign a value to a field, deleting all previous (observed) values.
Assignment of Nothing
just deletes all values.
Arguments
:: (MonadE m, MonadObjectState struct m, ReplicatedAsObject a) | |
=> UUID | Field name |
-> m (Maybe (ObjectRef a)) |
Find object field, merge all versions, return Nothing
if no versions
newStruct :: (MonadState StateFrame m, ReplicaClock m) => [(UUID, Instance Replicated)] -> m UUID Source #
Create an ORSet object from a list of named fields.
Arguments
:: (MonadE m, MonadObjectState struct m, ReplicaClock m, ReplicatedAsPayload a) | |
=> UUID | Field name |
-> a | Value |
-> m () |
Remove from a field all values that equal to the specified value.
Arguments
:: (MonadE m, MonadObjectState struct m, ReplicaClock m, ReplicatedAsPayload a) | |
=> UUID | Field name |
-> (a -> m Bool) | |
-> m () |
Remove from a field all values that obey the predicate.
Arguments
:: (MonadE m, MonadState StateFrame m, ReplicatedAsObject a) | |
=> UUID | Field name |
-> StateChunk ORSetRep | ORSet object chunk |
-> m (Maybe a) |
Decode field value, merge all versions, return Nothing
if no versions
Arguments
:: (MonadE m, MonadState StateFrame m, Replicated a) | |
=> UUID | Field name |
-> StateChunk ORSetRep | ORSet object chunk |
-> m (Maybe a) |
Decode field value, keep last version only
Arguments
:: (MonadE m, Ord a, ReplicatedAsPayload a) | |
=> UUID | Field name |
-> StateChunk ORSetRep | ORSet object chunk |
-> m (Maybe a) |
Decode field value, keep max value only, only for Integer and Float
Arguments
:: (MonadE m, Ord a, ReplicatedAsPayload a) | |
=> UUID | Field name |
-> StateChunk ORSetRep | ORSet object chunk |
-> m (Maybe a) |
Decode field value, keep min value only, only for Integer and Float
Arguments
:: (MonadE m, MonadState StateFrame m, Replicated a) | |
=> UUID | Field name |
-> StateChunk ORSetRep | ORSet object chunk |
-> m [a] |
Decode field value, keep all versions
Arguments
:: (MonadE m, ReplicaClock m, ReplicatedAsObject field, ReplicatedAsObject struct) | |
=> UUID | Field name |
-> ObjectStateT field m a | Inner object modifier |
-> ObjectStateT struct m a |
Pseudo-lens to an object inside a specified field