\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.