X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=Shares%2FmTaskShare.icl;fp=Shares%2FmTaskShare.icl;h=1ccbcc4f3a95affecd5d3cb1f9a62ad4a7fcdb5e;hb=d99f9bb5fdcf3a58381281b5927a65f82b44b494;hp=2133f0b76b8e5d592ef517f6fd36fa47431c25e6;hpb=23df390c56cd0c57eeb6d71e44bfa89ccb27cad7;p=mTask.git diff --git a/Shares/mTaskShare.icl b/Shares/mTaskShare.icl index 2133f0b..1ccbcc4 100644 --- a/Shares/mTaskShare.icl +++ b/Shares/mTaskShare.icl @@ -94,34 +94,12 @@ cleanSharesTask taskid d = updateShares d id //TODO instance == MTaskShare where (==) a b = a.identifier == b.identifier -getRealShare :: MTaskDevice MTaskShare -> Shared BCValue -getRealShare dev share = sdsFocus () +shareShare :: MTaskDevice MTaskShare -> Shared BCValue +shareShare dev share = sdsFocus () $ mapReadWriteError (deviceLens dev share) $ sdsFocus (Just (dev, share.identifier)) $ deviceStore -//getRealShare :: MTaskDevice MTaskShare -> Shared BCValue -//getRealShare dev share = sdsLens -// ("realShare" +++ toString share.identifier) -// (const $ Just (dev, share.identifier)) -// (SDSRead $ const $ \rs->case find ((==)dev) rs of -// Nothing = Error $ exception "Device doesn't exist anymore" -// Just {deviceShares} = case find ((==)share) deviceShares of -// Nothing = Error $ exception "Share doesn't exist anymore" -// Just share = Ok share.MTaskShare.value -// ) -// (SDSWrite $ const $ \rs w->partition ((==)dev) devs of -// ([], _) = Error $ exception "Device doesn't exist anymore" -// ([_,_:_], _) = Error $ exception "Multiple matching devices" -// ([d=:{deviceShares}], devs) = case partition ((==)share) deviceShares of -// ([], _) = Error $ exception "Share doesn't exist anymore" -// ([_,_:_], _) = Error $ exception "Multiple matching shares" -// ([s], shares) -// # s = {MTaskShare | s & value=val} -// # d = {MTaskDevice | d & deviceShares=[s:shares]} -// = Ok $ Just [d:devs]) -// (SDSNotify $ const $ \rs w - deviceLens dev share = (mread, mwrite) where mread :: [MTaskDevice] -> MaybeError TaskException BCValue @@ -136,10 +114,8 @@ where ([d=:{deviceShares}], devs) = case partition ((==)share) deviceShares of ([], _) = Error $ exception "Share doesn't exist anymore" ([_,_:_], _) = Error $ exception "Multiple matching shares" - ([s], shares) - # s = {MTaskShare | s & value=val} - # d = {MTaskDevice | d & deviceShares=[s:shares]} - = Ok $ Just [d:devs] + ([s], shares) = Ok $ Just [{MTaskDevice | d & + deviceShares=[{MTaskShare | s & value=val}:shares]}:devs] updateShareFromPublish :: MTaskDevice Int BCValue -> Task BCValue updateShareFromPublish dev ident val = set val