\hypertarget{group__Eina__Debug}{}\doxysection{Eina\+\_\+\+Debug}
\label{group__Eina__Debug}\index{Eina\_Debug@{Eina\_Debug}}
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{structEina__Debug__Packet__Header}{Eina\+\_\+\+Debug\+\_\+\+Packet\+\_\+\+Header}}
\begin{DoxyCompactList}\small\item\em Header of Eina Debug packet. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structEina__Debug__Opcode}{Eina\+\_\+\+Debug\+\_\+\+Opcode}}
\begin{DoxyCompactList}\small\item\em Structure to describe information for an opcode. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \mbox{\hyperlink{group__Eina__Debug_ga8a72425573fe98102a418f3ea65f1939}{EINA\+\_\+\+DEBUG\+\_\+\+OPCODES\+\_\+\+ARRAY\+\_\+\+DEFINE}}(Name, ...)
\begin{DoxyCompactList}\small\item\em Helper for creating global opcodes arrays. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef struct \+\_\+\+Eina\+\_\+\+Debug\+\_\+\+Session \mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}}
\begin{DoxyCompactList}\small\item\em A handle used to interact with the debug daemon. \end{DoxyCompactList}\item 
typedef \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}($\ast$ \mbox{\hyperlink{group__Eina__Debug_ga857d65e32b5d99c56ad20728b05bdb05}{Eina\+\_\+\+Debug\+\_\+\+Cb}}) (\mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}} $\ast$session, int srcid, void $\ast$buffer, int size)
\begin{DoxyCompactList}\small\item\em A callback invoked when a specific packet is received. \end{DoxyCompactList}\item 
typedef void($\ast$ \mbox{\hyperlink{group__Eina__Debug_ga3571a4841c694609742ef812120d6a1c}{Eina\+\_\+\+Debug\+\_\+\+Opcode\+\_\+\+Status\+\_\+\+Cb}}) (void $\ast$data, \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} status)
\begin{DoxyCompactList}\small\item\em When the opcodes ids are retrieved, this callback is invoked with a true status. \end{DoxyCompactList}\item 
typedef \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}($\ast$ \mbox{\hyperlink{group__Eina__Debug_ga4ccdf065f99fc2332b619b52afdb49ef}{Eina\+\_\+\+Debug\+\_\+\+Dispatch\+\_\+\+Cb}}) (\mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}} $\ast$session, void $\ast$buffer)
\begin{DoxyCompactList}\small\item\em Dispatcher callback prototype used to override the default dispatcher of a session. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Debug_gadbb22359fcdc0d00425cafdaf651a73d}\label{group__Eina__Debug_gadbb22359fcdc0d00425cafdaf651a73d}} 
typedef \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}($\ast$ {\bfseries Eina\+\_\+\+Debug\+\_\+\+Timer\+\_\+\+Cb}) (void $\ast$)
\begin{DoxyCompactList}\small\item\em A callback for a timer. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Debug_gad0726b99bd9ff73f0792151f601fc293}\label{group__Eina__Debug_gad0726b99bd9ff73f0792151f601fc293}} 
typedef struct \+\_\+\+Eina\+\_\+\+Debug\+\_\+\+Timer {\bfseries Eina\+\_\+\+Debug\+\_\+\+Timer}
\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \{ \newline
\mbox{\hyperlink{group__Eina__Debug_ggac72f7803394f05658258f8a2b76f53aaace4e586e98795fe6c3a0becad3e2006d}{EINA\+\_\+\+DEBUG\+\_\+\+OPCODE\+\_\+\+INVALID}} = -\/1
, \newline
\mbox{\hyperlink{group__Eina__Debug_ggac72f7803394f05658258f8a2b76f53aaaa7711ebebe15c281fdc075d0b1b6219a}{EINA\+\_\+\+DEBUG\+\_\+\+OPCODE\+\_\+\+REGISTER}} = 0
, \newline
\mbox{\hyperlink{group__Eina__Debug_ggac72f7803394f05658258f8a2b76f53aaa710a7588cde0ebc8607b9dd549cab295}{EINA\+\_\+\+DEBUG\+\_\+\+OPCODE\+\_\+\+HELLO}} = 1
 \}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} void \mbox{\hyperlink{group__Eina__Debug_gaaa4eb25fb13ccca50fe6aff76ccefd52}{eina\+\_\+debug\+\_\+disable}} (void)
\begin{DoxyCompactList}\small\item\em Disable debugging. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}} $\ast$ \mbox{\hyperlink{group__Eina__Debug_ga45eb71dc28eeb3c677edcf2fe83ab97b}{eina\+\_\+debug\+\_\+local\+\_\+connect}} (\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} is\+\_\+master)
\begin{DoxyCompactList}\small\item\em Connect to the local daemon. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}} $\ast$ \mbox{\hyperlink{group__Eina__Debug_ga6439a7f94a180de542b7256851f508db}{eina\+\_\+debug\+\_\+remote\+\_\+connect}} (int port)
\begin{DoxyCompactList}\small\item\em Connect to remote daemon. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} void \mbox{\hyperlink{group__Eina__Debug_ga8d659810419166902e28a1966b076918}{eina\+\_\+debug\+\_\+session\+\_\+terminate}} (\mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}} $\ast$session)
\begin{DoxyCompactList}\small\item\em Terminate the session. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} void \mbox{\hyperlink{group__Eina__Debug_ga439276f5b4a5e0487d4bef0c63d3333f}{eina\+\_\+debug\+\_\+session\+\_\+dispatch\+\_\+override}} (\mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}} $\ast$session, \mbox{\hyperlink{group__Eina__Debug_ga4ccdf065f99fc2332b619b52afdb49ef}{Eina\+\_\+\+Debug\+\_\+\+Dispatch\+\_\+\+Cb}} disp\+\_\+cb)
\begin{DoxyCompactList}\small\item\em Override the dispatcher of a specific session. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Debug_ga4ccdf065f99fc2332b619b52afdb49ef}{Eina\+\_\+\+Debug\+\_\+\+Dispatch\+\_\+\+Cb}} \mbox{\hyperlink{group__Eina__Debug_ga16a87279b55d843e2fddbe4c60a6a6f8}{eina\+\_\+debug\+\_\+session\+\_\+dispatch\+\_\+get}} (\mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}} $\ast$session)
\begin{DoxyCompactList}\small\item\em Get the dispatcher of a specific session. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Debug_ga18ea63b8b1991c36a2cfbbf0f56305a6}{eina\+\_\+debug\+\_\+dispatch}} (\mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}} $\ast$session, void $\ast$buffer)
\begin{DoxyCompactList}\small\item\em Dispatch a given packet according to its header. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} void \mbox{\hyperlink{group__Eina__Debug_gad0e8bef1cc32c9a1311c4d22dbeb1ff5}{eina\+\_\+debug\+\_\+session\+\_\+data\+\_\+set}} (\mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}} $\ast$session, void $\ast$data)
\begin{DoxyCompactList}\small\item\em Set data to a session. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} void $\ast$ \mbox{\hyperlink{group__Eina__Debug_gae5d5032cc9ed6c50b544e8b09d3064be}{eina\+\_\+debug\+\_\+session\+\_\+data\+\_\+get}} (\mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}} $\ast$session)
\begin{DoxyCompactList}\small\item\em Get the data attached to a session. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} void \mbox{\hyperlink{group__Eina__Debug_ga83f8611108de835877081c5a9fd6ed14}{eina\+\_\+debug\+\_\+opcodes\+\_\+register}} (\mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}} $\ast$session, const \mbox{\hyperlink{structEina__Debug__Opcode}{Eina\+\_\+\+Debug\+\_\+\+Opcode}} ops\mbox{[}$\,$\mbox{]}, \mbox{\hyperlink{group__Eina__Debug_ga3571a4841c694609742ef812120d6a1c}{Eina\+\_\+\+Debug\+\_\+\+Opcode\+\_\+\+Status\+\_\+\+Cb}} status\+\_\+cb, void $\ast$status\+\_\+data)
\begin{DoxyCompactList}\small\item\em Register opcodes to a session. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} int \mbox{\hyperlink{group__Eina__Debug_ga2333114c7846eeb28ed9977e8f1d5a68}{eina\+\_\+debug\+\_\+session\+\_\+send}} (\mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}} $\ast$session, int dest\+\_\+id, int op, void $\ast$data, int size)
\begin{DoxyCompactList}\small\item\em Send a packet to the given destination. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} Eina\+\_\+\+Debug\+\_\+\+Timer $\ast$ \mbox{\hyperlink{group__Eina__Debug_ga7ee77b6ad54edf58672592980ba8dbbb}{eina\+\_\+debug\+\_\+timer\+\_\+add}} (unsigned int timeout\+\_\+ms, \mbox{\hyperlink{group__Eina__Debug_gadbb22359fcdc0d00425cafdaf651a73d}{Eina\+\_\+\+Debug\+\_\+\+Timer\+\_\+\+Cb}} cb, void $\ast$data)
\begin{DoxyCompactList}\small\item\em Add a timer. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} void \mbox{\hyperlink{group__Eina__Debug_ga68d966f21466f3e39c46dd367fa20a9f}{eina\+\_\+debug\+\_\+timer\+\_\+del}} (Eina\+\_\+\+Debug\+\_\+\+Timer $\ast$timer)
\begin{DoxyCompactList}\small\item\em Delete a timer. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} void \mbox{\hyperlink{group__Eina__Debug_ga5aff3616cbaba0494f759acfd142eef6}{eina\+\_\+debug\+\_\+fork\+\_\+reset}} (void)
\begin{DoxyCompactList}\small\item\em Reset the eina debug system after forking. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}


\doxysubsection{Macro Definition Documentation}
\mbox{\Hypertarget{group__Eina__Debug_ga8a72425573fe98102a418f3ea65f1939}\label{group__Eina__Debug_ga8a72425573fe98102a418f3ea65f1939}} 
\index{Eina\_Debug@{Eina\_Debug}!EINA\_DEBUG\_OPCODES\_ARRAY\_DEFINE@{EINA\_DEBUG\_OPCODES\_ARRAY\_DEFINE}}
\index{EINA\_DEBUG\_OPCODES\_ARRAY\_DEFINE@{EINA\_DEBUG\_OPCODES\_ARRAY\_DEFINE}!Eina\_Debug@{Eina\_Debug}}
\doxysubsubsection{\texorpdfstring{EINA\_DEBUG\_OPCODES\_ARRAY\_DEFINE}{EINA\_DEBUG\_OPCODES\_ARRAY\_DEFINE}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+DEBUG\+\_\+\+OPCODES\+\_\+\+ARRAY\+\_\+\+DEFINE(\begin{DoxyParamCaption}\item[{}]{Name,  }\item[{}]{... }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\ \ \textcolor{keyword}{static}\ \mbox{\hyperlink{structEina__Debug__Opcode}{Eina\_Debug\_Opcode}}\ *\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}
\DoxyCodeLine{\ \ Name(\textcolor{keywordtype}{void})\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}
\DoxyCodeLine{\ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ \ \mbox{\hyperlink{structEina__Debug__Opcode}{Eina\_Debug\_Opcode}}\ tmp[]\ =\ \{\ \_\_VA\_ARGS\_\_\ \};\ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ \ \textcolor{keyword}{static}\ \mbox{\hyperlink{structEina__Debug__Opcode}{Eina\_Debug\_Opcode}}\ internal[\mbox{\hyperlink{group__Eina__Types__Group_ga7c1b6f81660b4e30516169e9e7d3261c}{EINA\_C\_ARRAY\_LENGTH}}(tmp)\ +\ 1]\ =\ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ \ \ \ \{\ \{\ 0,\ 0,\ 0\ \}\ \};\ \ \ \ \ \ \ \ \ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ \ if\ (internal[0].opcode\_name\ ==\ NULL)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ \ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ memcpy(internal,\ tmp,\ \textcolor{keyword}{sizeof}(tmp));\ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ \ \textcolor{keywordflow}{return}\ internal;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}
\DoxyCodeLine{\ \ \}}

\end{DoxyCode}


Helper for creating global opcodes arrays. 

The problem is on windows where you can\textquotesingle{}t declare a static array with external symbols in it, because the addresses are only known at runtime. 

\doxysubsection{Typedef Documentation}
\mbox{\Hypertarget{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}\label{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}} 
\index{Eina\_Debug@{Eina\_Debug}!Eina\_Debug\_Session@{Eina\_Debug\_Session}}
\index{Eina\_Debug\_Session@{Eina\_Debug\_Session}!Eina\_Debug@{Eina\_Debug}}
\doxysubsubsection{\texorpdfstring{Eina\_Debug\_Session}{Eina\_Debug\_Session}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}}}



A handle used to interact with the debug daemon. 

It contains all the information related to this connection and needed to send/receive/dispatch/... \mbox{\Hypertarget{group__Eina__Debug_ga857d65e32b5d99c56ad20728b05bdb05}\label{group__Eina__Debug_ga857d65e32b5d99c56ad20728b05bdb05}} 
\index{Eina\_Debug@{Eina\_Debug}!Eina\_Debug\_Cb@{Eina\_Debug\_Cb}}
\index{Eina\_Debug\_Cb@{Eina\_Debug\_Cb}!Eina\_Debug@{Eina\_Debug}}
\doxysubsubsection{\texorpdfstring{Eina\_Debug\_Cb}{Eina\_Debug\_Cb}}
{\footnotesize\ttfamily Eina\+\_\+\+Debug\+\_\+\+Cb}



A callback invoked when a specific packet is received. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em session} & the session \\
\hline
\mbox{\texttt{ in}}  & {\em srcid} & the source id \\
\hline
\mbox{\texttt{ in}}  & {\em buffer} & the packet payload data. It doesn\textquotesingle{}t contain any transport information. \\
\hline
\mbox{\texttt{ in}}  & {\em size} & the packet payload size\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
True on success, false if the connection seems compromised. 
\end{DoxyReturn}
\mbox{\Hypertarget{group__Eina__Debug_ga3571a4841c694609742ef812120d6a1c}\label{group__Eina__Debug_ga3571a4841c694609742ef812120d6a1c}} 
\index{Eina\_Debug@{Eina\_Debug}!Eina\_Debug\_Opcode\_Status\_Cb@{Eina\_Debug\_Opcode\_Status\_Cb}}
\index{Eina\_Debug\_Opcode\_Status\_Cb@{Eina\_Debug\_Opcode\_Status\_Cb}!Eina\_Debug@{Eina\_Debug}}
\doxysubsubsection{\texorpdfstring{Eina\_Debug\_Opcode\_Status\_Cb}{Eina\_Debug\_Opcode\_Status\_Cb}}
{\footnotesize\ttfamily Eina\+\_\+\+Debug\+\_\+\+Opcode\+\_\+\+Status\+\_\+\+Cb}



When the opcodes ids are retrieved, this callback is invoked with a true status. 

When a disconnection to the daemon is happening, the opcodes ids are set as invalid and this callback is invoked with a false status. The upper layer should not try to send more requests until a new connection is established.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em data} & data pointer given when registering opcodes \\
\hline
\mbox{\texttt{ in}}  & {\em status} & EINA\+\_\+\+TRUE if opcodes have been received from the daemon, EINA\+\_\+\+FALSE otherwise. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__Debug_ga4ccdf065f99fc2332b619b52afdb49ef}\label{group__Eina__Debug_ga4ccdf065f99fc2332b619b52afdb49ef}} 
\index{Eina\_Debug@{Eina\_Debug}!Eina\_Debug\_Dispatch\_Cb@{Eina\_Debug\_Dispatch\_Cb}}
\index{Eina\_Debug\_Dispatch\_Cb@{Eina\_Debug\_Dispatch\_Cb}!Eina\_Debug@{Eina\_Debug}}
\doxysubsubsection{\texorpdfstring{Eina\_Debug\_Dispatch\_Cb}{Eina\_Debug\_Dispatch\_Cb}}
{\footnotesize\ttfamily Eina\+\_\+\+Debug\+\_\+\+Dispatch\+\_\+\+Cb}



Dispatcher callback prototype used to override the default dispatcher of a session. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em session} & the session \\
\hline
\mbox{\texttt{ in}}  & {\em buffer} & the packet received\\
\hline
\end{DoxyParams}
The given packet is the entire data received, including the header.

\begin{DoxyReturn}{Returns}
The return result of the invoked callback. 
\end{DoxyReturn}


\doxysubsection{Enumeration Type Documentation}
\mbox{\Hypertarget{group__Eina__Debug_gac72f7803394f05658258f8a2b76f53aa}\label{group__Eina__Debug_gac72f7803394f05658258f8a2b76f53aa}} 
\doxysubsubsection{\texorpdfstring{anonymous enum}{anonymous enum}}
{\footnotesize\ttfamily anonymous enum}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{EINA\_DEBUG\_OPCODE\_INVALID@{EINA\_DEBUG\_OPCODE\_INVALID}!Eina\_Debug@{Eina\_Debug}}\index{Eina\_Debug@{Eina\_Debug}!EINA\_DEBUG\_OPCODE\_INVALID@{EINA\_DEBUG\_OPCODE\_INVALID}}}\mbox{\Hypertarget{group__Eina__Debug_ggac72f7803394f05658258f8a2b76f53aaace4e586e98795fe6c3a0becad3e2006d}\label{group__Eina__Debug_ggac72f7803394f05658258f8a2b76f53aaace4e586e98795fe6c3a0becad3e2006d}} 
EINA\+\_\+\+DEBUG\+\_\+\+OPCODE\+\_\+\+INVALID&Invalid opcode value. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{EINA\_DEBUG\_OPCODE\_REGISTER@{EINA\_DEBUG\_OPCODE\_REGISTER}!Eina\_Debug@{Eina\_Debug}}\index{Eina\_Debug@{Eina\_Debug}!EINA\_DEBUG\_OPCODE\_REGISTER@{EINA\_DEBUG\_OPCODE\_REGISTER}}}\mbox{\Hypertarget{group__Eina__Debug_ggac72f7803394f05658258f8a2b76f53aaaa7711ebebe15c281fdc075d0b1b6219a}\label{group__Eina__Debug_ggac72f7803394f05658258f8a2b76f53aaaa7711ebebe15c281fdc075d0b1b6219a}} 
EINA\+\_\+\+DEBUG\+\_\+\+OPCODE\+\_\+\+REGISTER&Opcode used to register other opcodes. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{EINA\_DEBUG\_OPCODE\_HELLO@{EINA\_DEBUG\_OPCODE\_HELLO}!Eina\_Debug@{Eina\_Debug}}\index{Eina\_Debug@{Eina\_Debug}!EINA\_DEBUG\_OPCODE\_HELLO@{EINA\_DEBUG\_OPCODE\_HELLO}}}\mbox{\Hypertarget{group__Eina__Debug_ggac72f7803394f05658258f8a2b76f53aaa710a7588cde0ebc8607b9dd549cab295}\label{group__Eina__Debug_ggac72f7803394f05658258f8a2b76f53aaa710a7588cde0ebc8607b9dd549cab295}} 
EINA\+\_\+\+DEBUG\+\_\+\+OPCODE\+\_\+\+HELLO&Opcode used to send greetings to the daemon. \\
\hline

\end{DoxyEnumFields}


\doxysubsection{Function Documentation}
\mbox{\Hypertarget{group__Eina__Debug_gaaa4eb25fb13ccca50fe6aff76ccefd52}\label{group__Eina__Debug_gaaa4eb25fb13ccca50fe6aff76ccefd52}} 
\index{Eina\_Debug@{Eina\_Debug}!eina\_debug\_disable@{eina\_debug\_disable}}
\index{eina\_debug\_disable@{eina\_debug\_disable}!Eina\_Debug@{Eina\_Debug}}
\doxysubsubsection{\texorpdfstring{eina\_debug\_disable()}{eina\_debug\_disable()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} void eina\+\_\+debug\+\_\+disable (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



Disable debugging. 

Useful for applications that don\textquotesingle{}t want debugging. The debug daemon is one of them. Need to be invoked before eina\+\_\+init. Otherwise it won\textquotesingle{}t have any effect. 

References \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}}.

\mbox{\Hypertarget{group__Eina__Debug_ga45eb71dc28eeb3c677edcf2fe83ab97b}\label{group__Eina__Debug_ga45eb71dc28eeb3c677edcf2fe83ab97b}} 
\index{Eina\_Debug@{Eina\_Debug}!eina\_debug\_local\_connect@{eina\_debug\_local\_connect}}
\index{eina\_debug\_local\_connect@{eina\_debug\_local\_connect}!Eina\_Debug@{Eina\_Debug}}
\doxysubsubsection{\texorpdfstring{eina\_debug\_local\_connect()}{eina\_debug\_local\_connect()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}} $\ast$ eina\+\_\+debug\+\_\+local\+\_\+connect (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}}]{is\+\_\+master }\end{DoxyParamCaption})}



Connect to the local daemon. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em is\+\_\+master} & true if the application is a debugger. EINA\+\_\+\+FALSE otherwise.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The session on success or NULL otherwise. 
\end{DoxyReturn}


References \mbox{\hyperlink{group__Eina__Debug_ga6439a7f94a180de542b7256851f508db}{eina\+\_\+debug\+\_\+remote\+\_\+connect()}}, and \mbox{\hyperlink{group__Evil_ga454bde45f2e42a909a704d160869aad5}{fcntl()}}.

\mbox{\Hypertarget{group__Eina__Debug_ga6439a7f94a180de542b7256851f508db}\label{group__Eina__Debug_ga6439a7f94a180de542b7256851f508db}} 
\index{Eina\_Debug@{Eina\_Debug}!eina\_debug\_remote\_connect@{eina\_debug\_remote\_connect}}
\index{eina\_debug\_remote\_connect@{eina\_debug\_remote\_connect}!Eina\_Debug@{Eina\_Debug}}
\doxysubsubsection{\texorpdfstring{eina\_debug\_remote\_connect()}{eina\_debug\_remote\_connect()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}} $\ast$ eina\+\_\+debug\+\_\+remote\+\_\+connect (\begin{DoxyParamCaption}\item[{int}]{port }\end{DoxyParamCaption})}



Connect to remote daemon. 

This function connects to localhost\+:port.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em port} & the port to connect to\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The session on success or NULL otherwise. 
\end{DoxyReturn}


References \mbox{\hyperlink{group__Evil_ga454bde45f2e42a909a704d160869aad5}{fcntl()}}.



Referenced by \mbox{\hyperlink{group__Eina__Debug_ga45eb71dc28eeb3c677edcf2fe83ab97b}{eina\+\_\+debug\+\_\+local\+\_\+connect()}}.

\mbox{\Hypertarget{group__Eina__Debug_ga8d659810419166902e28a1966b076918}\label{group__Eina__Debug_ga8d659810419166902e28a1966b076918}} 
\index{Eina\_Debug@{Eina\_Debug}!eina\_debug\_session\_terminate@{eina\_debug\_session\_terminate}}
\index{eina\_debug\_session\_terminate@{eina\_debug\_session\_terminate}!Eina\_Debug@{Eina\_Debug}}
\doxysubsubsection{\texorpdfstring{eina\_debug\_session\_terminate()}{eina\_debug\_session\_terminate()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} void eina\+\_\+debug\+\_\+session\+\_\+terminate (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}} $\ast$}]{session }\end{DoxyParamCaption})}



Terminate the session. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em session} & the session to terminate \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__Debug_ga439276f5b4a5e0487d4bef0c63d3333f}\label{group__Eina__Debug_ga439276f5b4a5e0487d4bef0c63d3333f}} 
\index{Eina\_Debug@{Eina\_Debug}!eina\_debug\_session\_dispatch\_override@{eina\_debug\_session\_dispatch\_override}}
\index{eina\_debug\_session\_dispatch\_override@{eina\_debug\_session\_dispatch\_override}!Eina\_Debug@{Eina\_Debug}}
\doxysubsubsection{\texorpdfstring{eina\_debug\_session\_dispatch\_override()}{eina\_debug\_session\_dispatch\_override()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} void eina\+\_\+debug\+\_\+session\+\_\+dispatch\+\_\+override (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}} $\ast$}]{session,  }\item[{\mbox{\hyperlink{group__Eina__Debug_ga4ccdf065f99fc2332b619b52afdb49ef}{Eina\+\_\+\+Debug\+\_\+\+Dispatch\+\_\+\+Cb}}}]{disp\+\_\+cb }\end{DoxyParamCaption})}



Override the dispatcher of a specific session. 

For example, it can be used to forward a packet to the main thread and to use the default dispatcher there. All the packets received in this session will use this dispatcher.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em session} & the session \\
\hline
\mbox{\texttt{ in}}  & {\em disp\+\_\+cb} & the new dispatcher for the given session \\
\hline
\end{DoxyParams}


References \mbox{\hyperlink{group__Eina__Debug_ga18ea63b8b1991c36a2cfbbf0f56305a6}{eina\+\_\+debug\+\_\+dispatch()}}.

\mbox{\Hypertarget{group__Eina__Debug_ga16a87279b55d843e2fddbe4c60a6a6f8}\label{group__Eina__Debug_ga16a87279b55d843e2fddbe4c60a6a6f8}} 
\index{Eina\_Debug@{Eina\_Debug}!eina\_debug\_session\_dispatch\_get@{eina\_debug\_session\_dispatch\_get}}
\index{eina\_debug\_session\_dispatch\_get@{eina\_debug\_session\_dispatch\_get}!Eina\_Debug@{Eina\_Debug}}
\doxysubsubsection{\texorpdfstring{eina\_debug\_session\_dispatch\_get()}{eina\_debug\_session\_dispatch\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Debug_ga4ccdf065f99fc2332b619b52afdb49ef}{Eina\+\_\+\+Debug\+\_\+\+Dispatch\+\_\+\+Cb}} eina\+\_\+debug\+\_\+session\+\_\+dispatch\+\_\+get (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}} $\ast$}]{session }\end{DoxyParamCaption})}



Get the dispatcher of a specific session. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em session} & the session\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The session dispatcher. 
\end{DoxyReturn}
\mbox{\Hypertarget{group__Eina__Debug_ga18ea63b8b1991c36a2cfbbf0f56305a6}\label{group__Eina__Debug_ga18ea63b8b1991c36a2cfbbf0f56305a6}} 
\index{Eina\_Debug@{Eina\_Debug}!eina\_debug\_dispatch@{eina\_debug\_dispatch}}
\index{eina\_debug\_dispatch@{eina\_debug\_dispatch}!Eina\_Debug@{Eina\_Debug}}
\doxysubsubsection{\texorpdfstring{eina\_debug\_dispatch()}{eina\_debug\_dispatch()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+debug\+\_\+dispatch (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}} $\ast$}]{session,  }\item[{void $\ast$}]{buffer }\end{DoxyParamCaption})}



Dispatch a given packet according to its header. 

This function checks the header contained in the packet and invokes the correct callback according to the opcode. This is the default dispatcher.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em session} & the session \\
\hline
\mbox{\texttt{ in}}  & {\em buffer} & the packet\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
True on success, false if the connection seems compromised. 
\end{DoxyReturn}


References \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}}, \mbox{\hyperlink{group__Eina__List__Group_gac6efafc19f526d916cdb9757240a8773}{EINA\+\_\+\+LIST\+\_\+\+FOREACH}}, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}}, \mbox{\hyperlink{structEina__Debug__Packet__Header_acf5cdb6d31a7aae75a2db35b5d2ce0a1}{Eina\+\_\+\+Debug\+\_\+\+Packet\+\_\+\+Header\+::opcode}}, and \mbox{\hyperlink{structEina__Debug__Packet__Header_afea40db2734556849524f77b7bb52bb6}{Eina\+\_\+\+Debug\+\_\+\+Packet\+\_\+\+Header\+::size}}.



Referenced by \mbox{\hyperlink{group__Eina__Debug_ga439276f5b4a5e0487d4bef0c63d3333f}{eina\+\_\+debug\+\_\+session\+\_\+dispatch\+\_\+override()}}.

\mbox{\Hypertarget{group__Eina__Debug_gad0e8bef1cc32c9a1311c4d22dbeb1ff5}\label{group__Eina__Debug_gad0e8bef1cc32c9a1311c4d22dbeb1ff5}} 
\index{Eina\_Debug@{Eina\_Debug}!eina\_debug\_session\_data\_set@{eina\_debug\_session\_data\_set}}
\index{eina\_debug\_session\_data\_set@{eina\_debug\_session\_data\_set}!Eina\_Debug@{Eina\_Debug}}
\doxysubsubsection{\texorpdfstring{eina\_debug\_session\_data\_set()}{eina\_debug\_session\_data\_set()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} void eina\+\_\+debug\+\_\+session\+\_\+data\+\_\+set (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}} $\ast$}]{session,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})}



Set data to a session. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em session} & the session \\
\hline
\mbox{\texttt{ in}}  & {\em data} & the data to set \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__Debug_gae5d5032cc9ed6c50b544e8b09d3064be}\label{group__Eina__Debug_gae5d5032cc9ed6c50b544e8b09d3064be}} 
\index{Eina\_Debug@{Eina\_Debug}!eina\_debug\_session\_data\_get@{eina\_debug\_session\_data\_get}}
\index{eina\_debug\_session\_data\_get@{eina\_debug\_session\_data\_get}!Eina\_Debug@{Eina\_Debug}}
\doxysubsubsection{\texorpdfstring{eina\_debug\_session\_data\_get()}{eina\_debug\_session\_data\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} void $\ast$ eina\+\_\+debug\+\_\+session\+\_\+data\+\_\+get (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}} $\ast$}]{session }\end{DoxyParamCaption})}



Get the data attached to a session. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em session} & the session\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The data of the session. 
\end{DoxyReturn}
\mbox{\Hypertarget{group__Eina__Debug_ga83f8611108de835877081c5a9fd6ed14}\label{group__Eina__Debug_ga83f8611108de835877081c5a9fd6ed14}} 
\index{Eina\_Debug@{Eina\_Debug}!eina\_debug\_opcodes\_register@{eina\_debug\_opcodes\_register}}
\index{eina\_debug\_opcodes\_register@{eina\_debug\_opcodes\_register}!Eina\_Debug@{Eina\_Debug}}
\doxysubsubsection{\texorpdfstring{eina\_debug\_opcodes\_register()}{eina\_debug\_opcodes\_register()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} void eina\+\_\+debug\+\_\+opcodes\+\_\+register (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}} $\ast$}]{session,  }\item[{const \mbox{\hyperlink{structEina__Debug__Opcode}{Eina\+\_\+\+Debug\+\_\+\+Opcode}}}]{ops\mbox{[}$\,$\mbox{]},  }\item[{\mbox{\hyperlink{group__Eina__Debug_ga3571a4841c694609742ef812120d6a1c}{Eina\+\_\+\+Debug\+\_\+\+Opcode\+\_\+\+Status\+\_\+\+Cb}}}]{status\+\_\+cb,  }\item[{void $\ast$}]{status\+\_\+data }\end{DoxyParamCaption})}



Register opcodes to a session. 

This function registers opcodes for the given session. If the session is not connected, the request is not sent to the daemon. Otherwise, the request for the opcodes ids is sent. On the reception from the daemon, status\+\_\+cb function is invoked to inform the requester that the opcodes can now be used.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em session} & the session \\
\hline
\mbox{\texttt{ in}}  & {\em ops} & the operations to register \\
\hline
\mbox{\texttt{ in}}  & {\em status\+\_\+cb} & a function to call when the opcodes are received \\
\hline
\mbox{\texttt{ in}}  & {\em status\+\_\+data} & the data to give to status\+\_\+cb \\
\hline
\end{DoxyParams}


References \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}}, and \mbox{\hyperlink{group__Eina__List__Group_ga625698a383dda8fc0db245a1c7608c49}{eina\+\_\+list\+\_\+append()}}.

\mbox{\Hypertarget{group__Eina__Debug_ga2333114c7846eeb28ed9977e8f1d5a68}\label{group__Eina__Debug_ga2333114c7846eeb28ed9977e8f1d5a68}} 
\index{Eina\_Debug@{Eina\_Debug}!eina\_debug\_session\_send@{eina\_debug\_session\_send}}
\index{eina\_debug\_session\_send@{eina\_debug\_session\_send}!Eina\_Debug@{Eina\_Debug}}
\doxysubsubsection{\texorpdfstring{eina\_debug\_session\_send()}{eina\_debug\_session\_send()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} int eina\+\_\+debug\+\_\+session\+\_\+send (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Debug_ga527a15ac8d676e71ae80920f09f68eee}{Eina\+\_\+\+Debug\+\_\+\+Session}} $\ast$}]{session,  }\item[{int}]{dest\+\_\+id,  }\item[{int}]{op,  }\item[{void $\ast$}]{data,  }\item[{int}]{size }\end{DoxyParamCaption})}



Send a packet to the given destination. 

The packet will be treated by the debug thread itself.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em session} & the session to use to send the packet \\
\hline
\mbox{\texttt{ in}}  & {\em dest\+\_\+id} & the destination id to send the packet to \\
\hline
\mbox{\texttt{ in}}  & {\em op} & the opcode for this packet \\
\hline
\mbox{\texttt{ in}}  & {\em data} & payload to send \\
\hline
\mbox{\texttt{ in}}  & {\em size} & payload size\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The number of sent bytes. 
\end{DoxyReturn}


References \mbox{\hyperlink{group__Eina__Debug_ggac72f7803394f05658258f8a2b76f53aaace4e586e98795fe6c3a0becad3e2006d}{EINA\+\_\+\+DEBUG\+\_\+\+OPCODE\+\_\+\+INVALID}}, \mbox{\hyperlink{structEina__Debug__Packet__Header_acf5cdb6d31a7aae75a2db35b5d2ce0a1}{Eina\+\_\+\+Debug\+\_\+\+Packet\+\_\+\+Header\+::opcode}}, and \mbox{\hyperlink{structEina__Debug__Packet__Header_afea40db2734556849524f77b7bb52bb6}{Eina\+\_\+\+Debug\+\_\+\+Packet\+\_\+\+Header\+::size}}.

\mbox{\Hypertarget{group__Eina__Debug_ga7ee77b6ad54edf58672592980ba8dbbb}\label{group__Eina__Debug_ga7ee77b6ad54edf58672592980ba8dbbb}} 
\index{Eina\_Debug@{Eina\_Debug}!eina\_debug\_timer\_add@{eina\_debug\_timer\_add}}
\index{eina\_debug\_timer\_add@{eina\_debug\_timer\_add}!Eina\_Debug@{Eina\_Debug}}
\doxysubsubsection{\texorpdfstring{eina\_debug\_timer\_add()}{eina\_debug\_timer\_add()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} Eina\+\_\+\+Debug\+\_\+\+Timer $\ast$ eina\+\_\+debug\+\_\+timer\+\_\+add (\begin{DoxyParamCaption}\item[{unsigned int}]{timeout\+\_\+ms,  }\item[{\mbox{\hyperlink{group__Eina__Debug_gadbb22359fcdc0d00425cafdaf651a73d}{Eina\+\_\+\+Debug\+\_\+\+Timer\+\_\+\+Cb}}}]{cb,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})}



Add a timer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em timeout\+\_\+ms} & timeout in ms \\
\hline
\mbox{\texttt{ in}}  & {\em cb} & callback to call when the timeout is reached \\
\hline
\mbox{\texttt{ in}}  & {\em data} & user data\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The timer handle, NULL on error. 
\end{DoxyReturn}


References \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}}.

\mbox{\Hypertarget{group__Eina__Debug_ga68d966f21466f3e39c46dd367fa20a9f}\label{group__Eina__Debug_ga68d966f21466f3e39c46dd367fa20a9f}} 
\index{Eina\_Debug@{Eina\_Debug}!eina\_debug\_timer\_del@{eina\_debug\_timer\_del}}
\index{eina\_debug\_timer\_del@{eina\_debug\_timer\_del}!Eina\_Debug@{Eina\_Debug}}
\doxysubsubsection{\texorpdfstring{eina\_debug\_timer\_del()}{eina\_debug\_timer\_del()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} void eina\+\_\+debug\+\_\+timer\+\_\+del (\begin{DoxyParamCaption}\item[{Eina\+\_\+\+Debug\+\_\+\+Timer $\ast$}]{timer }\end{DoxyParamCaption})}



Delete a timer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em timer} & the timer to delete\\
\hline
\end{DoxyParams}
If the timer reaches the end and has not be renewed, trying to delete it will lead to a crash, as it has already been deleted internally. 

References \mbox{\hyperlink{group__Eina__List__Group_gafa48dac0f51f3d8d91b2a2f223bf4079}{eina\+\_\+list\+\_\+data\+\_\+find\+\_\+list()}}, and \mbox{\hyperlink{group__Eina__List__Group_gaf86ee0fd9fe0643ece301fc86f04e720}{eina\+\_\+list\+\_\+remove\+\_\+list()}}.

\mbox{\Hypertarget{group__Eina__Debug_ga5aff3616cbaba0494f759acfd142eef6}\label{group__Eina__Debug_ga5aff3616cbaba0494f759acfd142eef6}} 
\index{Eina\_Debug@{Eina\_Debug}!eina\_debug\_fork\_reset@{eina\_debug\_fork\_reset}}
\index{eina\_debug\_fork\_reset@{eina\_debug\_fork\_reset}!Eina\_Debug@{Eina\_Debug}}
\doxysubsubsection{\texorpdfstring{eina\_debug\_fork\_reset()}{eina\_debug\_fork\_reset()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} void eina\+\_\+debug\+\_\+fork\+\_\+reset (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



Reset the eina debug system after forking. 

Call this any time the application forks \begin{DoxySince}{Since}
1.\+21 
\end{DoxySince}


References \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}}, and \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}}.



Referenced by \mbox{\hyperlink{group__Ecore__Main__Loop__Group_gaadff0a56ba8818d8a35f9dc95e25a808}{ecore\+\_\+fork\+\_\+reset()}}.

