\chapter{Amoeba Specific Services}

\section{\module{amoeba} ---
         Amoeba system support}

\declaremodule{builtin}{amoeba}
  \platform{Amoeba}
\modulesynopsis{Functions for the Amoeba operating system.}


This module provides some object types and operations useful for
Amoeba applications.  It is only available on systems that support
Amoeba operations.  RPC errors and other Amoeba errors are reported as
the exception \code{amoeba.error = 'amoeba.error'}.

The module \module{amoeba} defines the following items:

\begin{funcdesc}{name_append}{path, cap}
Stores a capability in the Amoeba directory tree.
Arguments are the pathname (a string) and the capability (a capability
object as returned by
\function{name_lookup()}).
\end{funcdesc}

\begin{funcdesc}{name_delete}{path}
Deletes a capability from the Amoeba directory tree.
Argument is the pathname.
\end{funcdesc}

\begin{funcdesc}{name_lookup}{path}
Looks up a capability.
Argument is the pathname.
Returns a
\dfn{capability}
object, to which various interesting operations apply, described below.
\end{funcdesc}

\begin{funcdesc}{name_replace}{path, cap}
Replaces a capability in the Amoeba directory tree.
Arguments are the pathname and the new capability.
(This differs from
\function{name_append()}
in the behavior when the pathname already exists:
\function{name_append()}
finds this an error while
\function{name_replace()}
allows it, as its name suggests.)
\end{funcdesc}

\begin{datadesc}{capv}
A table representing the capability environment at the time the
interpreter was started.
(Alas, modifying this table does not affect the capability environment
of the interpreter.)
For example,
\code{amoeba.capv['ROOT']}
is the capability of your root directory, similar to
\code{getcap("ROOT")}
in C.
\end{datadesc}

\begin{excdesc}{error}
The exception raised when an Amoeba function returns an error.
The value accompanying this exception is a pair containing the numeric
error code and the corresponding string, as returned by the C function
\cfunction{err_why()}.
\end{excdesc}

\begin{funcdesc}{timeout}{msecs}
Sets the transaction timeout, in milliseconds.
Returns the previous timeout.
Initially, the timeout is set to 2 seconds by the Python interpreter.
\end{funcdesc}

\subsection{Capability Operations}

Capabilities are written in a convenient \ASCII{} format, also used by the
Amoeba utilities
\emph{c2a}(U)
and
\emph{a2c}(U).
For example:

\begin{verbatim}
>>> amoeba.name_lookup('/profile/cap')
aa:1c:95:52:6a:fa/14(ff)/8e:ba:5b:8:11:1a
>>> 
\end{verbatim}
%
The following methods are defined for capability objects.

\setindexsubitem{(capability method)}
\begin{funcdesc}{dir_list}{}
Returns a list of the names of the entries in an Amoeba directory.
\end{funcdesc}

\begin{funcdesc}{b_read}{offset, maxsize}
Reads (at most)
\var{maxsize}
bytes from a bullet file at offset
\var{offset.}
The data is returned as a string.
EOF is reported as an empty string.
\end{funcdesc}

\begin{funcdesc}{b_size}{}
Returns the size of a bullet file.
\end{funcdesc}

\begin{funcdesc}{dir_append}{}
\funcline{dir_delete}{}
\funcline{dir_lookup}{}
\funcline{dir_replace}{}
Like the corresponding
\samp{name_}*
functions, but with a path relative to the capability.
(For paths beginning with a slash the capability is ignored, since this
is the defined semantics for Amoeba.)
\end{funcdesc}

\begin{funcdesc}{std_info}{}
Returns the standard info string of the object.
\end{funcdesc}

\begin{funcdesc}{tod_gettime}{}
Returns the time (in seconds since the Epoch, in UCT, as for \POSIX) from
a time server.
\end{funcdesc}

\begin{funcdesc}{tod_settime}{t}
Sets the time kept by a time server.
\end{funcdesc}
