Changes
authorAli Younis <ayounis@uci.edu>
Mon, 10 Oct 2016 05:56:55 +0000 (22:56 -0700)
committerAli Younis <ayounis@uci.edu>
Mon, 10 Oct 2016 05:56:55 +0000 (22:56 -0700)
version2/doc/iotcloud.tex

index 147aab0..8ecd8bb 100644 (file)
@@ -338,6 +338,50 @@ If more than 1 put request is made at the same time, the server is free to order
 \subsection{\textbf{Delete a slot}}\r
 In this case the server will delete the data in the slot that has the server sequence number that matches the server sequence number in the delete request.  The server could delay the delete if it wishes (if it has plenty of space for new slots).\r
 \r
+\section{\textbf{Data Structure Abstraction}}\r
+This section outlines the data structure abstraction that is provided to the IoT application.  It is similar to a hash table key-value store.\r
+\r
+Operations on the key-value store:\r
+\begin{itemize}\r
+    \item Put operation\r
+    \item Get operation\r
+    \item Check put status\r
+    \item Create New Key Operation. \r
+\end{itemize}\r
+\r
+\subsection{\textbf{Put Operation}}\r
+This operation is described as follows:\r
+\begin{itemize}\r
+    \item Has the form:  put(Key-value-list, guard)\r
+    \item Updates the key-value pairs listed in the key-value list.\r
+    \item Has a boolean guard that is passed in that is able to read from keys that are associated with the same arbitrator as the keys being updated\r
+    \item Returns an ID for this put (Transaction ID) or an error code if put is formatted incorrectly.\r
+    \item Underlying action: Creates a transaction, creates a record and inserts that record in the data structure (doing deletes and other house keeping operations as needed).\r
+\end{itemize}\r
+\r
+\subsection{\textbf{Get Operation}}\r
+\begin{itemize}\r
+    \item Has the form:  get(key-name)\r
+    \item Gets the current value of a key, also returns a machine ID for the arbitrator of that key.\r
+    \item Underlying action:  Does a pull from the server and resolves the latest value for the specified key (as mentioned above).  Also does house keeping work like key rescue and sequence number notification as needed.\r
+\end{itemize}\r
+\r
+\subsection{\textbf{Check put status}}\r
+\begin{itemize}\r
+    \item Has the form of a callback.\r
+    \item Notifies the application of an aborted transaction.\r
+    \item Underlying action:  when an abort notification is received then the callback is called.  This is checked whenever this application makes changes to the data structure.\r
+\end{itemize}\r
+\r
+\subsection{\textbf{Create New Key Operation}}\r
+\begin{itemize}\r
+    \item Has the form:  createKey(key-name, machine-id)\r
+    \item Creates a new key with an arbitrator at a specific machine ID\r
+    \item Underlying action: Creates a new key notification, creates a record and inserts that record in the data structure (doing deletes and other house keeping operations as needed).\r
+\end{itemize}\r
+\r
+\r
+\r
 \section{\textbf{System Guarantees}}\r
 \begin{itemize}\r
     \item Server cannot view data inside records\r