\hypertarget{mw__srvc__aware_8h}{
\section{mw\_\-srvc\_\-aware.h File Reference}
\label{mw__srvc__aware_8h}\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}}
}


\subsection{Detailed Description}
The aware service. 

..

\begin{Desc}
\item[\hyperlink{todo__todo000005}{Todo}]remove the whole idea of an instantiated \hyperlink{structmwAwareList}{mwAwareList} and instead use arbitrary pointers (including NULL) as keys to internally stored lists. This removes the problem of the service free'ing its lists and invalidating \hyperlink{structmwAwareList}{mwAwareList} references from client code. \end{Desc}


{\tt \#include \char`\"{}mw\_\-common.h\char`\"{}}\par
\subsection*{Data Structures}
\begin{CompactItemize}
\item 
struct \hyperlink{structmwAwareHandler}{mwAwareHandler}
\item 
struct \hyperlink{structmwAwareListHandler}{mwAwareListHandler}
\end{CompactItemize}
\subsection*{Defines}
\begin{CompactItemize}
\item 
\#define \hyperlink{mw__srvc__aware_8h_9673ef57609cdfc52d0f53d77018a5cb}{mwService\_\-AWARE}~0x00000011
\begin{CompactList}\small\item\em Type identifier for the aware service. \item\end{CompactList}\end{CompactItemize}
\subsection*{Typedefs}
\begin{CompactItemize}
\item 
typedef void($\ast$ \hyperlink{mw__srvc__aware_8h_a7277370bc330a93280748cffabb611c}{mwAwareAttributeHandler} )(struct \hyperlink{structmwServiceAware}{mwServiceAware} $\ast$srvc, struct \hyperlink{structmwAwareAttribute}{mwAwareAttribute} $\ast$attrib)
\item 
typedef void($\ast$ \hyperlink{mw__srvc__aware_8h_c399c4fd166c3be73879d0a989322ea0}{mwAwareIdAttributeHandler} )(struct \hyperlink{structmwAwareList}{mwAwareList} $\ast$list, struct \hyperlink{structmwAwareIdBlock}{mwAwareIdBlock} $\ast$id, struct \hyperlink{structmwAwareAttribute}{mwAwareAttribute} $\ast$attrib)
\begin{CompactList}\small\item\em Appropriate function type for the on-option signal. \item\end{CompactList}\item 
typedef void($\ast$ \hyperlink{mw__srvc__aware_8h_b612bd2e0ae1619269280b6850b382d9}{mwAwareSnapshotHandler} )(struct \hyperlink{structmwAwareList}{mwAwareList} $\ast$list, struct \hyperlink{structmwAwareSnapshot}{mwAwareSnapshot} $\ast$id)
\begin{CompactList}\small\item\em Appropriate function type for the on-aware signal. \item\end{CompactList}\end{CompactItemize}
\subsection*{Enumerations}
\begin{CompactItemize}
\item 
enum \hyperlink{mw__srvc__aware_8h_d8092d618186e59148fc837325f1d1c8}{mwAwareAttributeKeys} \{ \par
\hyperlink{mw__srvc__aware_8h_d8092d618186e59148fc837325f1d1c835df5690450f7a15d5f9c67c6e678a4b}{mwAttribute\_\-AV\_\-PREFS\_\-SET} =  0x01, 
\par
\hyperlink{mw__srvc__aware_8h_d8092d618186e59148fc837325f1d1c8db1d5c2cca3454bc04356fa76366099e}{mwAttribute\_\-MICROPHONE} =  0x02, 
\par
\hyperlink{mw__srvc__aware_8h_d8092d618186e59148fc837325f1d1c83ea3994c8654686923257569bf1f2c4b}{mwAttribute\_\-SPEAKERS} =  0x03, 
\par
\hyperlink{mw__srvc__aware_8h_d8092d618186e59148fc837325f1d1c85a65cfdc1159fc3334a0153a71bc36ea}{mwAttribute\_\-VIDEO\_\-CAMERA} =  0x04, 
\par
\hyperlink{mw__srvc__aware_8h_d8092d618186e59148fc837325f1d1c8176fb6c3a5ec356d38ed837da0033741}{mwAttribute\_\-FILE\_\-TRANSFER} =  0x06
 \}
\begin{CompactList}\small\item\em Predefined keys appropriate for a \hyperlink{structmwAwareAttribute}{mwAwareAttribute}. \item\end{CompactList}\end{CompactItemize}
\subsection*{Functions}
\begin{CompactItemize}
\item 
gboolean \hyperlink{mw__srvc__aware_8h_f0c4c5116240026e2cbdd1a9e39b083f}{mwAwareAttribute\_\-asBoolean} (const struct \hyperlink{structmwAwareAttribute}{mwAwareAttribute} $\ast$attrib)
\item 
guint32 \hyperlink{mw__srvc__aware_8h_178680ed401229ba8756f7643145ebb4}{mwAwareAttribute\_\-asInteger} (const struct \hyperlink{structmwAwareAttribute}{mwAwareAttribute} $\ast$attrib)
\item 
struct \hyperlink{structmwOpaque}{mwOpaque} $\ast$ \hyperlink{mw__srvc__aware_8h_a97de2edb78a4bca8fb029bb93a27698}{mwAwareAttribute\_\-asOpaque} (const struct \hyperlink{structmwAwareAttribute}{mwAwareAttribute} $\ast$attrib)
\begin{CompactList}\small\item\em Direct access to an attribute's underlying opaque. \item\end{CompactList}\item 
char $\ast$ \hyperlink{mw__srvc__aware_8h_05212b8e1eb916ffaade2dc98a9a0f2c}{mwAwareAttribute\_\-asString} (const struct \hyperlink{structmwAwareAttribute}{mwAwareAttribute} $\ast$attrib)
\begin{CompactList}\small\item\em Copy of attribute string, must be g\_\-free'd. \item\end{CompactList}\item 
guint32 \hyperlink{mw__srvc__aware_8h_6844d407e56c5000eba88839d69683f3}{mwAwareAttribute\_\-getKey} (const struct \hyperlink{structmwAwareAttribute}{mwAwareAttribute} $\ast$attrib)
\item 
int \hyperlink{mw__srvc__aware_8h_6b4e9cf5303953420f2036590a5fceaa}{mwAwareList\_\-addAware} (struct \hyperlink{structmwAwareList}{mwAwareList} $\ast$list, GList $\ast$id\_\-list)
\begin{CompactList}\small\item\em Add a collection of user IDs to an aware list. \item\end{CompactList}\item 
void \hyperlink{mw__srvc__aware_8h_4f2246c23927b6e383ca43db0c695482}{mwAwareList\_\-free} (struct \hyperlink{structmwAwareList}{mwAwareList} $\ast$list)
\begin{CompactList}\small\item\em Clean and free an aware list. \item\end{CompactList}\item 
gpointer \hyperlink{mw__srvc__aware_8h_d418dda7970b946a359e30c198bc51c8}{mwAwareList\_\-getClientData} (struct \hyperlink{structmwAwareList}{mwAwareList} $\ast$list)
\item 
struct \hyperlink{structmwAwareListHandler}{mwAwareListHandler} $\ast$ \hyperlink{mw__srvc__aware_8h_90cd1deb7eb33a76b50d78e87ee34179}{mwAwareList\_\-getHandler} (struct \hyperlink{structmwAwareList}{mwAwareList} $\ast$list)
\item 
guint32 $\ast$ \hyperlink{mw__srvc__aware_8h_5f9ee152e1b0b6f9e1234e411aece237}{mwAwareList\_\-getWatchedAttributes} (struct \hyperlink{structmwAwareList}{mwAwareList} $\ast$list)
\item 
struct \hyperlink{structmwAwareList}{mwAwareList} $\ast$ \hyperlink{mw__srvc__aware_8h_ec598a3fea70191db7eda085d9029458}{mwAwareList\_\-new} (struct \hyperlink{structmwServiceAware}{mwServiceAware} $\ast$srvc, struct \hyperlink{structmwAwareListHandler}{mwAwareListHandler} $\ast$handler)
\begin{CompactList}\small\item\em Allocate and initialize an aware list. \item\end{CompactList}\item 
int \hyperlink{mw__srvc__aware_8h_f120a3a385b9c1ddd7cb21c6a9192d12}{mwAwareList\_\-removeAllAware} (struct \hyperlink{structmwAwareList}{mwAwareList} $\ast$list)
\item 
int \hyperlink{mw__srvc__aware_8h_1fae01874bb8231532d3afad8a400d39}{mwAwareList\_\-removeAware} (struct \hyperlink{structmwAwareList}{mwAwareList} $\ast$list, GList $\ast$id\_\-list)
\begin{CompactList}\small\item\em Remove a collection of user IDs from an aware list. \item\end{CompactList}\item 
void \hyperlink{mw__srvc__aware_8h_b93ebcd6a559f2958d9f121cf44ea9de}{mwAwareList\_\-removeClientData} (struct \hyperlink{structmwAwareList}{mwAwareList} $\ast$list)
\item 
void \hyperlink{mw__srvc__aware_8h_2193b27bace4f8d2144d14c50e2ca051}{mwAwareList\_\-setClientData} (struct \hyperlink{structmwAwareList}{mwAwareList} $\ast$list, gpointer data, GDestroyNotify cleanup)
\item 
int \hyperlink{mw__srvc__aware_8h_2925fa791450aed0d944cae7ecd794b7}{mwAwareList\_\-unwatchAllAttributes} (struct \hyperlink{structmwAwareList}{mwAwareList} $\ast$list)
\begin{CompactList}\small\item\em remove all watched attributes \item\end{CompactList}\item 
int \hyperlink{mw__srvc__aware_8h_0edcfa5b39f1b07e89f286825060de6d}{mwAwareList\_\-unwatchAttributeArray} (struct \hyperlink{structmwAwareList}{mwAwareList} $\ast$list, guint32 $\ast$keys)
\begin{CompactList}\small\item\em stop watching a NULL terminated array of keys \item\end{CompactList}\item 
int \hyperlink{mw__srvc__aware_8h_770ee5f5cab511be3afc1c15d859877f}{mwAwareList\_\-unwatchAttributes} (struct \hyperlink{structmwAwareList}{mwAwareList} $\ast$list, guint32 key,...)
\begin{CompactList}\small\item\em stop watching a NULL terminated list of keys \item\end{CompactList}\item 
int \hyperlink{mw__srvc__aware_8h_4c9fe3fd20cb23f378852e5557193f5b}{mwAwareList\_\-watchAttributeArray} (struct \hyperlink{structmwAwareList}{mwAwareList} $\ast$list, guint32 $\ast$keys)
\begin{CompactList}\small\item\em watch an NULL terminated array of keys \item\end{CompactList}\item 
int \hyperlink{mw__srvc__aware_8h_131ac4aa6a0bc27f41c38336f2f1e32c}{mwAwareList\_\-watchAttributes} (struct \hyperlink{structmwAwareList}{mwAwareList} $\ast$list, guint32 key,...)
\begin{CompactList}\small\item\em watch a NULL terminated list of keys \item\end{CompactList}\item 
struct \hyperlink{structmwAwareAttribute}{mwAwareAttribute} $\ast$ \hyperlink{mw__srvc__aware_8h_0e7822840f738d742cc89ac2eceaeafb}{mwServiceAware\_\-getAttribute} (struct \hyperlink{structmwServiceAware}{mwServiceAware} $\ast$srvc, struct \hyperlink{structmwAwareIdBlock}{mwAwareIdBlock} $\ast$user, guint32 key)
\begin{CompactList}\small\item\em look up the last known copy of an attribute for a user by the attribute's key \item\end{CompactList}\item 
const char $\ast$ \hyperlink{mw__srvc__aware_8h_45b8200265bdbe10bc6eb4d2be1c863a}{mwServiceAware\_\-getText} (struct \hyperlink{structmwServiceAware}{mwServiceAware} $\ast$srvc, struct \hyperlink{structmwAwareIdBlock}{mwAwareIdBlock} $\ast$user)
\begin{CompactList}\small\item\em look up the status description for a user \item\end{CompactList}\item 
struct \hyperlink{structmwServiceAware}{mwServiceAware} $\ast$ \hyperlink{mw__srvc__aware_8h_14b0405dc36ca3156d9bdd0526d20378}{mwServiceAware\_\-new} (struct \hyperlink{structmwSession}{mwSession} $\ast$\hyperlink{structmwService_0c2badd2256155b2bee149fa4b57b7d6}{session}, struct \hyperlink{structmwAwareHandler}{mwAwareHandler} $\ast$handler)
\item 
int \hyperlink{mw__srvc__aware_8h_afab0ffd455f248ea7ec5e09aa3b430b}{mwServiceAware\_\-setAttribute} (struct \hyperlink{structmwServiceAware}{mwServiceAware} $\ast$srvc, guint32 key, struct \hyperlink{structmwOpaque}{mwOpaque} $\ast$opaque)
\begin{CompactList}\small\item\em Set an attribute value for this session. \item\end{CompactList}\item 
int \hyperlink{mw__srvc__aware_8h_56b5e71c7e14bbef1bc8483036a57de2}{mwServiceAware\_\-setAttributeBoolean} (struct \hyperlink{structmwServiceAware}{mwServiceAware} $\ast$srvc, guint32 key, gboolean val)
\item 
int \hyperlink{mw__srvc__aware_8h_723af5134b3937cc515988e65330e3ae}{mwServiceAware\_\-setAttributeInteger} (struct \hyperlink{structmwServiceAware}{mwServiceAware} $\ast$srvc, guint32 key, guint32 val)
\item 
int \hyperlink{mw__srvc__aware_8h_d56699f75da3373b46fad1555976ff47}{mwServiceAware\_\-setAttributeString} (struct \hyperlink{structmwServiceAware}{mwServiceAware} $\ast$srvc, guint32 key, const char $\ast$str)
\item 
void \hyperlink{mw__srvc__aware_8h_5a17b054331f6a0ff4fbe8e242f62738}{mwServiceAware\_\-setStatus} (struct \hyperlink{structmwServiceAware}{mwServiceAware} $\ast$srvc, struct \hyperlink{structmwAwareIdBlock}{mwAwareIdBlock} $\ast$user, struct \hyperlink{structmwUserStatus}{mwUserStatus} $\ast$stat)
\begin{CompactList}\small\item\em trigger a got\_\-aware event constructed from the passed user and status information. \item\end{CompactList}\item 
int \hyperlink{mw__srvc__aware_8h_5474b312ec1d7018f2290510afd09a8e}{mwServiceAware\_\-unsetAttribute} (struct \hyperlink{structmwServiceAware}{mwServiceAware} $\ast$srvc, guint32 key)
\begin{CompactList}\small\item\em Unset an attribute for this session. \item\end{CompactList}\end{CompactItemize}


\subsection{Define Documentation}
\hypertarget{mw__srvc__aware_8h_9673ef57609cdfc52d0f53d77018a5cb}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwService\_\-AWARE@{mwService\_\-AWARE}}
\index{mwService\_\-AWARE@{mwService\_\-AWARE}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define mwService\_\-AWARE~0x00000011}}
\label{mw__srvc__aware_8h_9673ef57609cdfc52d0f53d77018a5cb}


Type identifier for the aware service. 



\subsection{Typedef Documentation}
\hypertarget{mw__srvc__aware_8h_a7277370bc330a93280748cffabb611c}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareAttributeHandler@{mwAwareAttributeHandler}}
\index{mwAwareAttributeHandler@{mwAwareAttributeHandler}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}typedef void($\ast$ {\bf mwAwareAttributeHandler})(struct {\bf mwServiceAware} $\ast$srvc, struct {\bf mwAwareAttribute} $\ast$attrib)}}
\label{mw__srvc__aware_8h_a7277370bc330a93280748cffabb611c}


\hypertarget{mw__srvc__aware_8h_c399c4fd166c3be73879d0a989322ea0}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareIdAttributeHandler@{mwAwareIdAttributeHandler}}
\index{mwAwareIdAttributeHandler@{mwAwareIdAttributeHandler}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}typedef void($\ast$ {\bf mwAwareIdAttributeHandler})(struct {\bf mwAwareList} $\ast$list, struct {\bf mwAwareIdBlock} $\ast$id, struct {\bf mwAwareAttribute} $\ast$attrib)}}
\label{mw__srvc__aware_8h_c399c4fd166c3be73879d0a989322ea0}


Appropriate function type for the on-option signal. 

The option's value may need to be explicitly loaded in some instances, resulting in this handler being triggered again.

\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em list}]\hyperlink{structmwAwareList}{mwAwareList} emiting the signal \item[{\em id}]awareness the attribute belongs to \item[{\em attrib}]attribute \end{description}
\end{Desc}
\hypertarget{mw__srvc__aware_8h_b612bd2e0ae1619269280b6850b382d9}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareSnapshotHandler@{mwAwareSnapshotHandler}}
\index{mwAwareSnapshotHandler@{mwAwareSnapshotHandler}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}typedef void($\ast$ {\bf mwAwareSnapshotHandler})(struct {\bf mwAwareList} $\ast$list, struct {\bf mwAwareSnapshot} $\ast$id)}}
\label{mw__srvc__aware_8h_b612bd2e0ae1619269280b6850b382d9}


Appropriate function type for the on-aware signal. 

\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em list}]\hyperlink{structmwAwareList}{mwAwareList} emiting the signal \item[{\em id}]awareness status information \item[{\em data}]user-specified data \end{description}
\end{Desc}


\subsection{Enumeration Type Documentation}
\hypertarget{mw__srvc__aware_8h_d8092d618186e59148fc837325f1d1c8}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareAttributeKeys@{mwAwareAttributeKeys}}
\index{mwAwareAttributeKeys@{mwAwareAttributeKeys}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}enum {\bf mwAwareAttributeKeys}}}
\label{mw__srvc__aware_8h_d8092d618186e59148fc837325f1d1c8}


Predefined keys appropriate for a \hyperlink{structmwAwareAttribute}{mwAwareAttribute}. 

\begin{Desc}
\item[Enumerator: ]\par
\begin{description}
\index{mwAttribute\_\-AV\_\-PREFS\_\-SET@{mwAttribute\_\-AV\_\-PREFS\_\-SET}!mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}}\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAttribute\_\-AV\_\-PREFS\_\-SET@{mwAttribute\_\-AV\_\-PREFS\_\-SET}}\item[{\em 
\hypertarget{mw__srvc__aware_8h_d8092d618186e59148fc837325f1d1c835df5690450f7a15d5f9c67c6e678a4b}{
mwAttribute\_\-AV\_\-PREFS\_\-SET}
\label{mw__srvc__aware_8h_d8092d618186e59148fc837325f1d1c835df5690450f7a15d5f9c67c6e678a4b}
}]A/V prefs specified, gboolean. \index{mwAttribute\_\-MICROPHONE@{mwAttribute\_\-MICROPHONE}!mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}}\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAttribute\_\-MICROPHONE@{mwAttribute\_\-MICROPHONE}}\item[{\em 
\hypertarget{mw__srvc__aware_8h_d8092d618186e59148fc837325f1d1c8db1d5c2cca3454bc04356fa76366099e}{
mwAttribute\_\-MICROPHONE}
\label{mw__srvc__aware_8h_d8092d618186e59148fc837325f1d1c8db1d5c2cca3454bc04356fa76366099e}
}]has a microphone, gboolean \index{mwAttribute\_\-SPEAKERS@{mwAttribute\_\-SPEAKERS}!mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}}\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAttribute\_\-SPEAKERS@{mwAttribute\_\-SPEAKERS}}\item[{\em 
\hypertarget{mw__srvc__aware_8h_d8092d618186e59148fc837325f1d1c83ea3994c8654686923257569bf1f2c4b}{
mwAttribute\_\-SPEAKERS}
\label{mw__srvc__aware_8h_d8092d618186e59148fc837325f1d1c83ea3994c8654686923257569bf1f2c4b}
}]has speakers, gboolean \index{mwAttribute\_\-VIDEO\_\-CAMERA@{mwAttribute\_\-VIDEO\_\-CAMERA}!mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}}\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAttribute\_\-VIDEO\_\-CAMERA@{mwAttribute\_\-VIDEO\_\-CAMERA}}\item[{\em 
\hypertarget{mw__srvc__aware_8h_d8092d618186e59148fc837325f1d1c85a65cfdc1159fc3334a0153a71bc36ea}{
mwAttribute\_\-VIDEO\_\-CAMERA}
\label{mw__srvc__aware_8h_d8092d618186e59148fc837325f1d1c85a65cfdc1159fc3334a0153a71bc36ea}
}]has a video camera, gboolean \index{mwAttribute\_\-FILE\_\-TRANSFER@{mwAttribute\_\-FILE\_\-TRANSFER}!mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}}\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAttribute\_\-FILE\_\-TRANSFER@{mwAttribute\_\-FILE\_\-TRANSFER}}\item[{\em 
\hypertarget{mw__srvc__aware_8h_d8092d618186e59148fc837325f1d1c8176fb6c3a5ec356d38ed837da0033741}{
mwAttribute\_\-FILE\_\-TRANSFER}
\label{mw__srvc__aware_8h_d8092d618186e59148fc837325f1d1c8176fb6c3a5ec356d38ed837da0033741}
}]supports file transfers, gboolean \end{description}
\end{Desc}



\subsection{Function Documentation}
\hypertarget{mw__srvc__aware_8h_f0c4c5116240026e2cbdd1a9e39b083f}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareAttribute\_\-asBoolean@{mwAwareAttribute\_\-asBoolean}}
\index{mwAwareAttribute\_\-asBoolean@{mwAwareAttribute\_\-asBoolean}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}gboolean mwAwareAttribute\_\-asBoolean (const struct {\bf mwAwareAttribute} $\ast$ {\em attrib})}}
\label{mw__srvc__aware_8h_f0c4c5116240026e2cbdd1a9e39b083f}


\hypertarget{mw__srvc__aware_8h_178680ed401229ba8756f7643145ebb4}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareAttribute\_\-asInteger@{mwAwareAttribute\_\-asInteger}}
\index{mwAwareAttribute\_\-asInteger@{mwAwareAttribute\_\-asInteger}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}guint32 mwAwareAttribute\_\-asInteger (const struct {\bf mwAwareAttribute} $\ast$ {\em attrib})}}
\label{mw__srvc__aware_8h_178680ed401229ba8756f7643145ebb4}


\hypertarget{mw__srvc__aware_8h_a97de2edb78a4bca8fb029bb93a27698}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareAttribute\_\-asOpaque@{mwAwareAttribute\_\-asOpaque}}
\index{mwAwareAttribute\_\-asOpaque@{mwAwareAttribute\_\-asOpaque}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}struct {\bf mwOpaque}$\ast$ mwAwareAttribute\_\-asOpaque (const struct {\bf mwAwareAttribute} $\ast$ {\em attrib})\hspace{0.3cm}{\tt  \mbox{[}read\mbox{]}}}}
\label{mw__srvc__aware_8h_a97de2edb78a4bca8fb029bb93a27698}


Direct access to an attribute's underlying opaque. 

\hypertarget{mw__srvc__aware_8h_05212b8e1eb916ffaade2dc98a9a0f2c}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareAttribute\_\-asString@{mwAwareAttribute\_\-asString}}
\index{mwAwareAttribute\_\-asString@{mwAwareAttribute\_\-asString}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ mwAwareAttribute\_\-asString (const struct {\bf mwAwareAttribute} $\ast$ {\em attrib})}}
\label{mw__srvc__aware_8h_05212b8e1eb916ffaade2dc98a9a0f2c}


Copy of attribute string, must be g\_\-free'd. 

If the attribute's content cannot be loaded as a string, returns NULL \hypertarget{mw__srvc__aware_8h_6844d407e56c5000eba88839d69683f3}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareAttribute\_\-getKey@{mwAwareAttribute\_\-getKey}}
\index{mwAwareAttribute\_\-getKey@{mwAwareAttribute\_\-getKey}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}guint32 mwAwareAttribute\_\-getKey (const struct {\bf mwAwareAttribute} $\ast$ {\em attrib})}}
\label{mw__srvc__aware_8h_6844d407e56c5000eba88839d69683f3}


\hypertarget{mw__srvc__aware_8h_6b4e9cf5303953420f2036590a5fceaa}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareList\_\-addAware@{mwAwareList\_\-addAware}}
\index{mwAwareList\_\-addAware@{mwAwareList\_\-addAware}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mwAwareList\_\-addAware (struct {\bf mwAwareList} $\ast$ {\em list}, \/  GList $\ast$ {\em id\_\-list})}}
\label{mw__srvc__aware_8h_6b4e9cf5303953420f2036590a5fceaa}


Add a collection of user IDs to an aware list. 

\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em list}]\hyperlink{structmwAwareList}{mwAwareList} to add user ID to \item[{\em id\_\-list}]\hyperlink{structmwAwareIdBlock}{mwAwareIdBlock} list of user IDs to add \end{description}
\end{Desc}
\begin{Desc}
\item[Returns:]0 for success, non-zero to indicate an error. \end{Desc}
\hypertarget{mw__srvc__aware_8h_4f2246c23927b6e383ca43db0c695482}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareList\_\-free@{mwAwareList\_\-free}}
\index{mwAwareList\_\-free@{mwAwareList\_\-free}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void mwAwareList\_\-free (struct {\bf mwAwareList} $\ast$ {\em list})}}
\label{mw__srvc__aware_8h_4f2246c23927b6e383ca43db0c695482}


Clean and free an aware list. 

\hypertarget{mw__srvc__aware_8h_d418dda7970b946a359e30c198bc51c8}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareList\_\-getClientData@{mwAwareList\_\-getClientData}}
\index{mwAwareList\_\-getClientData@{mwAwareList\_\-getClientData}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}gpointer mwAwareList\_\-getClientData (struct {\bf mwAwareList} $\ast$ {\em list})}}
\label{mw__srvc__aware_8h_d418dda7970b946a359e30c198bc51c8}


\hypertarget{mw__srvc__aware_8h_90cd1deb7eb33a76b50d78e87ee34179}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareList\_\-getHandler@{mwAwareList\_\-getHandler}}
\index{mwAwareList\_\-getHandler@{mwAwareList\_\-getHandler}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}struct {\bf mwAwareListHandler}$\ast$ mwAwareList\_\-getHandler (struct {\bf mwAwareList} $\ast$ {\em list})\hspace{0.3cm}{\tt  \mbox{[}read\mbox{]}}}}
\label{mw__srvc__aware_8h_90cd1deb7eb33a76b50d78e87ee34179}


\hypertarget{mw__srvc__aware_8h_5f9ee152e1b0b6f9e1234e411aece237}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareList\_\-getWatchedAttributes@{mwAwareList\_\-getWatchedAttributes}}
\index{mwAwareList\_\-getWatchedAttributes@{mwAwareList\_\-getWatchedAttributes}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}guint32$\ast$ mwAwareList\_\-getWatchedAttributes (struct {\bf mwAwareList} $\ast$ {\em list})}}
\label{mw__srvc__aware_8h_5f9ee152e1b0b6f9e1234e411aece237}


\hypertarget{mw__srvc__aware_8h_ec598a3fea70191db7eda085d9029458}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareList\_\-new@{mwAwareList\_\-new}}
\index{mwAwareList\_\-new@{mwAwareList\_\-new}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}struct {\bf mwAwareList}$\ast$ mwAwareList\_\-new (struct {\bf mwServiceAware} $\ast$ {\em srvc}, \/  struct {\bf mwAwareListHandler} $\ast$ {\em handler})\hspace{0.3cm}{\tt  \mbox{[}read\mbox{]}}}}
\label{mw__srvc__aware_8h_ec598a3fea70191db7eda085d9029458}


Allocate and initialize an aware list. 

\hypertarget{mw__srvc__aware_8h_f120a3a385b9c1ddd7cb21c6a9192d12}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareList\_\-removeAllAware@{mwAwareList\_\-removeAllAware}}
\index{mwAwareList\_\-removeAllAware@{mwAwareList\_\-removeAllAware}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mwAwareList\_\-removeAllAware (struct {\bf mwAwareList} $\ast$ {\em list})}}
\label{mw__srvc__aware_8h_f120a3a385b9c1ddd7cb21c6a9192d12}


\hypertarget{mw__srvc__aware_8h_1fae01874bb8231532d3afad8a400d39}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareList\_\-removeAware@{mwAwareList\_\-removeAware}}
\index{mwAwareList\_\-removeAware@{mwAwareList\_\-removeAware}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mwAwareList\_\-removeAware (struct {\bf mwAwareList} $\ast$ {\em list}, \/  GList $\ast$ {\em id\_\-list})}}
\label{mw__srvc__aware_8h_1fae01874bb8231532d3afad8a400d39}


Remove a collection of user IDs from an aware list. 

\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em list}]\hyperlink{structmwAwareList}{mwAwareList} to remove user ID from \item[{\em id\_\-list}]\hyperlink{structmwAwareIdBlock}{mwAwareIdBlock} list of user IDs to remove \end{description}
\end{Desc}
\begin{Desc}
\item[Returns:]0 for success, non-zero to indicate an error. \end{Desc}
\hypertarget{mw__srvc__aware_8h_b93ebcd6a559f2958d9f121cf44ea9de}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareList\_\-removeClientData@{mwAwareList\_\-removeClientData}}
\index{mwAwareList\_\-removeClientData@{mwAwareList\_\-removeClientData}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void mwAwareList\_\-removeClientData (struct {\bf mwAwareList} $\ast$ {\em list})}}
\label{mw__srvc__aware_8h_b93ebcd6a559f2958d9f121cf44ea9de}


\hypertarget{mw__srvc__aware_8h_2193b27bace4f8d2144d14c50e2ca051}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareList\_\-setClientData@{mwAwareList\_\-setClientData}}
\index{mwAwareList\_\-setClientData@{mwAwareList\_\-setClientData}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void mwAwareList\_\-setClientData (struct {\bf mwAwareList} $\ast$ {\em list}, \/  gpointer {\em data}, \/  GDestroyNotify {\em cleanup})}}
\label{mw__srvc__aware_8h_2193b27bace4f8d2144d14c50e2ca051}


\hypertarget{mw__srvc__aware_8h_2925fa791450aed0d944cae7ecd794b7}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareList\_\-unwatchAllAttributes@{mwAwareList\_\-unwatchAllAttributes}}
\index{mwAwareList\_\-unwatchAllAttributes@{mwAwareList\_\-unwatchAllAttributes}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mwAwareList\_\-unwatchAllAttributes (struct {\bf mwAwareList} $\ast$ {\em list})}}
\label{mw__srvc__aware_8h_2925fa791450aed0d944cae7ecd794b7}


remove all watched attributes 

\hypertarget{mw__srvc__aware_8h_0edcfa5b39f1b07e89f286825060de6d}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareList\_\-unwatchAttributeArray@{mwAwareList\_\-unwatchAttributeArray}}
\index{mwAwareList\_\-unwatchAttributeArray@{mwAwareList\_\-unwatchAttributeArray}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mwAwareList\_\-unwatchAttributeArray (struct {\bf mwAwareList} $\ast$ {\em list}, \/  guint32 $\ast$ {\em keys})}}
\label{mw__srvc__aware_8h_0edcfa5b39f1b07e89f286825060de6d}


stop watching a NULL terminated array of keys 

\hypertarget{mw__srvc__aware_8h_770ee5f5cab511be3afc1c15d859877f}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareList\_\-unwatchAttributes@{mwAwareList\_\-unwatchAttributes}}
\index{mwAwareList\_\-unwatchAttributes@{mwAwareList\_\-unwatchAttributes}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mwAwareList\_\-unwatchAttributes (struct {\bf mwAwareList} $\ast$ {\em list}, \/  guint32 {\em key}, \/   {\em ...})}}
\label{mw__srvc__aware_8h_770ee5f5cab511be3afc1c15d859877f}


stop watching a NULL terminated list of keys 

\hypertarget{mw__srvc__aware_8h_4c9fe3fd20cb23f378852e5557193f5b}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareList\_\-watchAttributeArray@{mwAwareList\_\-watchAttributeArray}}
\index{mwAwareList\_\-watchAttributeArray@{mwAwareList\_\-watchAttributeArray}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mwAwareList\_\-watchAttributeArray (struct {\bf mwAwareList} $\ast$ {\em list}, \/  guint32 $\ast$ {\em keys})}}
\label{mw__srvc__aware_8h_4c9fe3fd20cb23f378852e5557193f5b}


watch an NULL terminated array of keys 

\hypertarget{mw__srvc__aware_8h_131ac4aa6a0bc27f41c38336f2f1e32c}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwAwareList\_\-watchAttributes@{mwAwareList\_\-watchAttributes}}
\index{mwAwareList\_\-watchAttributes@{mwAwareList\_\-watchAttributes}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mwAwareList\_\-watchAttributes (struct {\bf mwAwareList} $\ast$ {\em list}, \/  guint32 {\em key}, \/   {\em ...})}}
\label{mw__srvc__aware_8h_131ac4aa6a0bc27f41c38336f2f1e32c}


watch a NULL terminated list of keys 

\hypertarget{mw__srvc__aware_8h_0e7822840f738d742cc89ac2eceaeafb}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwServiceAware\_\-getAttribute@{mwServiceAware\_\-getAttribute}}
\index{mwServiceAware\_\-getAttribute@{mwServiceAware\_\-getAttribute}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}struct {\bf mwAwareAttribute}$\ast$ mwServiceAware\_\-getAttribute (struct {\bf mwServiceAware} $\ast$ {\em srvc}, \/  struct {\bf mwAwareIdBlock} $\ast$ {\em user}, \/  guint32 {\em key})\hspace{0.3cm}{\tt  \mbox{[}read\mbox{]}}}}
\label{mw__srvc__aware_8h_0e7822840f738d742cc89ac2eceaeafb}


look up the last known copy of an attribute for a user by the attribute's key 

\hypertarget{mw__srvc__aware_8h_45b8200265bdbe10bc6eb4d2be1c863a}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwServiceAware\_\-getText@{mwServiceAware\_\-getText}}
\index{mwServiceAware\_\-getText@{mwServiceAware\_\-getText}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ mwServiceAware\_\-getText (struct {\bf mwServiceAware} $\ast$ {\em srvc}, \/  struct {\bf mwAwareIdBlock} $\ast$ {\em user})}}
\label{mw__srvc__aware_8h_45b8200265bdbe10bc6eb4d2be1c863a}


look up the status description for a user 

\hypertarget{mw__srvc__aware_8h_14b0405dc36ca3156d9bdd0526d20378}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwServiceAware\_\-new@{mwServiceAware\_\-new}}
\index{mwServiceAware\_\-new@{mwServiceAware\_\-new}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}struct {\bf mwServiceAware}$\ast$ mwServiceAware\_\-new (struct {\bf mwSession} $\ast$ {\em session}, \/  struct {\bf mwAwareHandler} $\ast$ {\em handler})\hspace{0.3cm}{\tt  \mbox{[}read\mbox{]}}}}
\label{mw__srvc__aware_8h_14b0405dc36ca3156d9bdd0526d20378}


\hypertarget{mw__srvc__aware_8h_afab0ffd455f248ea7ec5e09aa3b430b}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwServiceAware\_\-setAttribute@{mwServiceAware\_\-setAttribute}}
\index{mwServiceAware\_\-setAttribute@{mwServiceAware\_\-setAttribute}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mwServiceAware\_\-setAttribute (struct {\bf mwServiceAware} $\ast$ {\em srvc}, \/  guint32 {\em key}, \/  struct {\bf mwOpaque} $\ast$ {\em opaque})}}
\label{mw__srvc__aware_8h_afab0ffd455f248ea7ec5e09aa3b430b}


Set an attribute value for this session. 

\hypertarget{mw__srvc__aware_8h_56b5e71c7e14bbef1bc8483036a57de2}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwServiceAware\_\-setAttributeBoolean@{mwServiceAware\_\-setAttributeBoolean}}
\index{mwServiceAware\_\-setAttributeBoolean@{mwServiceAware\_\-setAttributeBoolean}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mwServiceAware\_\-setAttributeBoolean (struct {\bf mwServiceAware} $\ast$ {\em srvc}, \/  guint32 {\em key}, \/  gboolean {\em val})}}
\label{mw__srvc__aware_8h_56b5e71c7e14bbef1bc8483036a57de2}


\hypertarget{mw__srvc__aware_8h_723af5134b3937cc515988e65330e3ae}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwServiceAware\_\-setAttributeInteger@{mwServiceAware\_\-setAttributeInteger}}
\index{mwServiceAware\_\-setAttributeInteger@{mwServiceAware\_\-setAttributeInteger}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mwServiceAware\_\-setAttributeInteger (struct {\bf mwServiceAware} $\ast$ {\em srvc}, \/  guint32 {\em key}, \/  guint32 {\em val})}}
\label{mw__srvc__aware_8h_723af5134b3937cc515988e65330e3ae}


\hypertarget{mw__srvc__aware_8h_d56699f75da3373b46fad1555976ff47}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwServiceAware\_\-setAttributeString@{mwServiceAware\_\-setAttributeString}}
\index{mwServiceAware\_\-setAttributeString@{mwServiceAware\_\-setAttributeString}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mwServiceAware\_\-setAttributeString (struct {\bf mwServiceAware} $\ast$ {\em srvc}, \/  guint32 {\em key}, \/  const char $\ast$ {\em str})}}
\label{mw__srvc__aware_8h_d56699f75da3373b46fad1555976ff47}


\hypertarget{mw__srvc__aware_8h_5a17b054331f6a0ff4fbe8e242f62738}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwServiceAware\_\-setStatus@{mwServiceAware\_\-setStatus}}
\index{mwServiceAware\_\-setStatus@{mwServiceAware\_\-setStatus}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void mwServiceAware\_\-setStatus (struct {\bf mwServiceAware} $\ast$ {\em srvc}, \/  struct {\bf mwAwareIdBlock} $\ast$ {\em user}, \/  struct {\bf mwUserStatus} $\ast$ {\em stat})}}
\label{mw__srvc__aware_8h_5a17b054331f6a0ff4fbe8e242f62738}


trigger a got\_\-aware event constructed from the passed user and status information. 

Useful for adding false users and having the getText function work for them \hypertarget{mw__srvc__aware_8h_5474b312ec1d7018f2290510afd09a8e}{
\index{mw\_\-srvc\_\-aware.h@{mw\_\-srvc\_\-aware.h}!mwServiceAware\_\-unsetAttribute@{mwServiceAware\_\-unsetAttribute}}
\index{mwServiceAware\_\-unsetAttribute@{mwServiceAware\_\-unsetAttribute}!mw_srvc_aware.h@{mw\_\-srvc\_\-aware.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mwServiceAware\_\-unsetAttribute (struct {\bf mwServiceAware} $\ast$ {\em srvc}, \/  guint32 {\em key})}}
\label{mw__srvc__aware_8h_5474b312ec1d7018f2290510afd09a8e}


Unset an attribute for this session. 

