derive class iTask MTaskShare
manageShares :: Task [MTaskDevice]
-manageShares = whileUnchanged deviceStore
+manageShares = whileUnchanged (sdsFocus (Just -1) deviceStore)
$ \devs->case devs of
[] = viewInformation "No devices yet" [] []
_ = allTasks (map manageSharesOnDevice devs)
) >>| treturn dev
updateShares :: MTaskDevice ([MTaskShare] -> [MTaskShare]) -> Task [MTaskShare]
-updateShares dev tfun = upd (map upFun) deviceStore
+updateShares dev tfun = upd (map upFun) (sdsFocus (Just -1) deviceStore)
@ (\d->d.deviceShares) o fromJust o find ((==)dev)
where
upFun d = if (dev == d) ({d&deviceShares=tfun d.deviceShares}) d
getRealShare dev share=:{identifier} = sdsFocus (Just identifier) $ SDSSource {SDSSource
| name = "mTaskShareMap-" +++ toString identifier, read=rr, write=ww}
where
- rr name iworld = case read deviceStore iworld of
+ rr name iworld = case read (sdsFocus (Just identifier) deviceStore) iworld of
(Error e, iworld) = (Error e, iworld)
(Ok devices, iworld) = case find ((==)dev) devices of
Nothing = (Error $ exception "Device doesn't exist anymore", iworld)
// Also send messages
ww name value iworld
| not (trace_tn ("Update to: " +++ printToString value)) = undef
- = case modify (tuple () o modifyValue value) deviceStore iworld of
+ = case modify (tuple () o modifyValue value) (sdsFocus (Just identifier) deviceStore) iworld of
(Error e, iworld) = (Error e, iworld)
(Ok _, iworld) = case sendMessagesIW [MTUpd identifier value] dev iworld of
(Error e, iworld) = (Error e, iworld)
- (Ok _, iworld) = (Ok $ maybe True ((==) identifier), iworld)
+ (Ok _, iworld) = (Ok $ const True, iworld)
modifyValue :: BCValue [MTaskDevice] -> [MTaskDevice]
modifyValue v ds = filterMap ((==)dev) (updateShare identifier v) ds
filterMap f t xs = [if (f x) (t x) x\\x<-xs]
getDeviceStoreForShare :: Int -> Shared [MTaskDevice]
-getDeviceStoreForShare ident = sdsFocus (Just ident) $ sdsFocus () deviceStore
+getDeviceStoreForShare ident = sdsFocus (Just ident) $ deviceStore
updateShareFromPublish :: MTaskDevice Int BCValue -> Task [MTaskDevice]
updateShareFromPublish dev ident val