| 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