edits
[iotcloud.git] / doc / iotcloud.tex
index 4f59ad887451189530ca76b30f87bbc7cd929d04..3c330127a561a45ae9bd5cfd2d72a96d46362626 100644 (file)
@@ -2,6 +2,7 @@
 \newcommand{\tuple}[1]{\ensuremath \langle #1 \rangle}\r
 \usepackage{color}\r
 \usepackage{amsthm}\r
+\usepackage{amsmath}\r
 \usepackage{algpseudocode}% http://ctan.org/pkg/algorithmicx\r
 \newtheorem{theorem}{Theorem}\r
 \newtheorem{defn}{Definition}\r
@@ -124,62 +125,38 @@ Client can make a request to resize the queue. This is done as a write that comb
        (b) a request to the server\r
 \r
 \subsection{Server Algorithm}\r
-\textbf{Key-Value $\langle K,V \rangle$ Pair} \\\r
-$k \in K$ \\\r
-$v \in V$ \\\r
-$\langle k,v \rangle \in P \subseteq K \times V$ \\\r
-$s \in SN \subseteq P*$ \\\r
-$slot_s = \langle s,E( \langle k,v \rangle ) \rangle$ \\\r
-$SN = \{sn_1, sn_2, \dots, sn_n\}$ \\\r
-$Q = \{slot_{sn_1}, slot_{sn_2}, \dots, slot_{sn_n}\}$ \\\r
+$s \in SN$ is a sequence number\\\r
+$sv \in SV$ is a slot's value\\\r
+$slot_s = \tuple{s, sv} \in SL \subseteq SN \times SV$ \\\r
 \r
-\textbf{States} \\\r
-\textit{Q = queue of slots on server} \\\r
-\textit{SN = set of existing sequence numbers $\leftrightarrow$\r
-$SN = \{sn_1, sn_2, \dots, sn_n\}$} \\\r
+\textbf{State} \\\r
+\textit{SL = set of live slots on server} \\\r
 \textit{max = maximum number of slots (input only for resize message)} \\\r
 \textit{n = number of slots} \\\r
-\textit{d = distance between two subsequent $sn_i$, e.g. 1 for 1, 2, 3, \r
-$\dots$} \\\r
 \r
 \begin{algorithmic}[1]\r
-\Function{Get}{$s,Data$}\r
-\If{$s \in SN$}\r
-       \State $Data \gets \{slot_{s}, \dots, slot_{sn_n}\} \forall $\r
-    $slot_i = \langle i,E( \langle k,v \rangle ) \rangle \in Q$\r
-\Else\r
-       \State $Data \gets \emptyset$\r
-\EndIf\r
-\State \Return{$Data$}\r
+\Function{GetSlot}{$s_g$}\r
+\State \Return{$\{\tuple{s, sv} \in SL \mid s \geq s_g\}$}\r
 \EndFunction\r
 \end{algorithmic}\r
 \r
 \begin{algorithmic}[1]\r
-\Function{Put}{$s,newMax,newSlot$}\r
-\If{$(newMax \neq \emptyset) \land (newMax > max)$}\Comment{Resize}\r
-       \State $Q' \gets \{slot_1, slot_2, \dots, slot_{newMax}\} \forall slot_i = 0 \r
-       \Leftrightarrow Q' = \emptyset$\r
-       \State $Q \gets Q' \cup Q$\r
-    \State $max \gets newMax$\r
+\Function{PutSlot}{$s',sv',max'$}\r
+\If{$(max' \neq \emptyset)$}\Comment{Resize}\r
+\State $max \gets max'$\r
 \EndIf\r
-\If{$(s = sn_n + d)$}\r
+\If{$(s' = s_n + d)$}\r
        \If{$n = max$}\r
-               \State $Q \gets Q - \{slot_{sn_1}\}$\r
-               \State $SN \gets SN - \{sn_1\}$\r
-               \State $Q \gets Q \cup newSlot$\r
+               \State $SL \gets SL - \{\langle s_n,sv_n \rangle\}$\r
        \Else \Comment{$n < max$}\r
-               \State $Q \gets Q \cup newSlot$\r
                \State $n \gets n + 1$\r
        \EndIf\r
-    \State $SN \gets SN \cup \{s\: |\: s = new\: sn_n\}$\r
-       \State $status \gets true$\r
-    \State $MSlot \gets \emptyset$\r
+    \State $SL \gets SL \cup \{\langle s',sv' \rangle\}$\r
+       \State \Return{$true$}\r
 \Else\r
-       \State $status \gets false$\r
-    \State $MSlot \gets \{slot_{s}, \dots, slot_{sn_n}\} \forall $\r
-    $slot_i = \langle i,E( \langle k,v \rangle ) \rangle \in Q$\r
+       \State \Return{$(false,\{\langle i,sv_i \rangle \in SL \mid \r
+    s' \leq i \leq s_n\})$}\r
 \EndIf\r
-\State \Return{$\langle status,MSlot \rangle$}\Comment{Return missed updates and status}\r
 \EndFunction\r
 \end{algorithmic}\r
 \r