X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=mtaskext.sdssem.tex;h=b0b8fa6acb606ff4d8222a50ea3246c5447bbd16;hb=b446f3259c042cd5b95d7a92070efb745efd0c50;hp=5ba33adca24bd37dc2f75ba51a128917d266f269;hpb=6548a5ec9ce8e0df67fc4019625ab5238eb1bf71;p=msc-thesis1617.git diff --git a/mtaskext.sdssem.tex b/mtaskext.sdssem.tex index 5ba33ad..b0b8fa6 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,17 @@ 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 a \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 a \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}