X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=mtaskext.sdssem.tex;h=c4f2c2b46beaee226fd5a09704578b51c35c2ee6;hb=8755061062b9738c80da1f5966c93ac6ec832a5c;hp=5ba33adca24bd37dc2f75ba51a128917d266f269;hpb=6548a5ec9ce8e0df67fc4019625ab5238eb1bf71;p=msc-thesis1617.git diff --git a/mtaskext.sdssem.tex b/mtaskext.sdssem.tex index 5ba33ad..c4f2c2b 100644 --- a/mtaskext.sdssem.tex +++ b/mtaskext.sdssem.tex @@ -2,14 +2,17 @@ of regular \gls{iTasks}-\glspl{SDS}. However, the same freedom that an \gls{SDS} has in the \gls{iTasks}-system is not given for \glspl{SDS} that reside on the client. Not all types are suitable to be located on a client, -simply because it needs to be representable on clients. Moreover, \glspl{SDS} -behave a little different in an \gls{mTask} device compared to in the -\gls{iTasks} system. In an \gls{iTasks} system, when the \gls{SDS} is updated, -a broadcast to all watching \glspl{Task} in the system is made to notify them -of the update. \glspl{SDS} can update often and the update might not be the -final value it will get. Implementing the same functionality on the \gls{mTask} -client would result in a lot of expensive unneeded bandwidth usage. Therefore -a device must publish the \gls{SDS} explicitly to save bandwidth. +simply because it needs to be representable on clients. Also, not all \gls{SDS} +types are possible to have on a device. Moreover, \glspl{SDS} behave a little +different in an \gls{mTask} device compared to in the \gls{iTasks} system. In +an \gls{iTasks} system, when the \gls{SDS} is updated, a broadcast to all +watching \glspl{Task} in the system is made to notify them of the update. +\glspl{SDS} can update often and the update might not be the final value it +will get. Implementing the same functionality on the \gls{mTask} client would +result in a lot of expensive unneeded bandwidth usage. Therefore a device must +publish the \gls{SDS} explicitly to save bandwidth. Note that this means that +the \gls{SDS} value on the device can be different compared to the value of the +same \gls{SDS} on the server. To add this functionality, the \CI{sds} class could be extended. However, this would result in having to update all existing views that use the \CI{sds} @@ -21,3 +24,18 @@ signature: class sdspub v where pub :: (v t Upd) -> v t Expr | type t \end{lstlisting} + +Moreover, \glspl{SDS} in the \gls{mTask}-\gls{EDSL} are always anonymous. There +is no way of labeling it since it is not a real entity, it is just a function. +When an \gls{SDS} is sent to the device it must be retrievable and +identifiable. It is not always clear which instantiated \gls{SDS} is which. +Therefore, an added class named \CI{namedsds} is added that provides the exact +same functionality as the \gls{SDS} class but adds a \CI{String} parameter that +can later be used to identify an \gls{SDS}. The types for this class are as +follows: + +\begin{lstlisting}[caption={The \texttt{namedsds} class}] +class namedsds v where + namedsds :: ((v t Upd)->In (Named t String) (Main (v c s))) -> (Main (v c s)) | type, mTaskType, toCode t +:: Named a b = Named infix 1 a b +\end{lstlisting}