\hypertarget{classServiceBase}{
\section{ServiceBase Class Reference}
\label{classServiceBase}\index{ServiceBase@{ServiceBase}}
}


Base class for Services.  




{\ttfamily \#include $<$service.hh$>$}

Inheritance diagram for ServiceBase:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=12.000000cm]{classServiceBase}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classServiceBase_a92da93bf5a1b47e22e885fb5b1010728}{
{\bfseries ServiceBase} (const string \&name=\char`\"{}Unknown\char`\"{})}
\label{classServiceBase_a92da93bf5a1b47e22e885fb5b1010728}

\item 
virtual int \hyperlink{classServiceBase_a791755872b2056ddd82a2f00904c7d2b}{startup} ()=0
\begin{DoxyCompactList}\small\item\em Start service. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classServiceBase_a6ad34506fd5a446d5667abcb2e1b593b}{shutdown} ()=0
\begin{DoxyCompactList}\small\item\em \hyperlink{classShutdown}{Shutdown} service. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classServiceBase_a80c60918af5e7d14ff077916c047ff38}{reset} ()
\begin{DoxyCompactList}\small\item\em Reset service. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classServiceBase_ac68898c4b8fe68735d3960fb2a710e94}{pause} ()
\begin{DoxyCompactList}\small\item\em \hyperlink{classPause}{Pause} service. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classServiceBase_a163e6ef21623c8000708f3b8fdfdae15}{resume} ()
\begin{DoxyCompactList}\small\item\em Resume paused service. \item\end{DoxyCompactList}\item 
const string \& \hyperlink{classServiceBase_a1329d4844ec476bb8944981989456b94}{service\_\-name} () const 
\begin{DoxyCompactList}\small\item\em Get name of service. \item\end{DoxyCompactList}\item 
\hypertarget{classServiceBase_a90a2baa98739294468a33df22fa985c4}{
ServiceStatus \hyperlink{classServiceBase_a90a2baa98739294468a33df22fa985c4}{status} () const }
\label{classServiceBase_a90a2baa98739294468a33df22fa985c4}

\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} current status. \item\end{DoxyCompactList}\item 
const string \& \hyperlink{classServiceBase_a707e988f0d34ad0c7d44a7280bdfdfba}{status\_\-note} () const 
\begin{DoxyCompactList}\small\item\em Get annotation associated with current status. \item\end{DoxyCompactList}\item 
\hypertarget{classServiceBase_a7db342b45c351bc1afa7ab9c34de882d}{
const char $\ast$ \hyperlink{classServiceBase_a7db342b45c351bc1afa7ab9c34de882d}{status\_\-name} () const }
\label{classServiceBase_a7db342b45c351bc1afa7ab9c34de882d}

\begin{DoxyCompactList}\small\item\em Get a character representation of \hyperlink{protocolthe-p}{the} current service status. \item\end{DoxyCompactList}\item 
int \hyperlink{classServiceBase_a2d3c8766100851b234922f235662625c}{set\_\-observer} (\hyperlink{classServiceChangeObserverBase}{ServiceChangeObserverBase} $\ast$so)
\begin{DoxyCompactList}\small\item\em Set service status change observer. \item\end{DoxyCompactList}\item 
int \hyperlink{classServiceBase_a0ee5501501fa77d5316e92f6afdd324d}{unset\_\-observer} (\hyperlink{classServiceChangeObserverBase}{ServiceChangeObserverBase} $\ast$so)
\begin{DoxyCompactList}\small\item\em Remove service status change observer. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{classServiceBase_af76e794839ca188fc4d41261e833abce}{set\_\-status} (ServiceStatus status, const string \&note)
\begin{DoxyCompactList}\small\item\em Set current status. \item\end{DoxyCompactList}\item 
void \hyperlink{classServiceBase_a4faa52a91529e78454e6e2226402d604}{set\_\-status} (ServiceStatus status)
\begin{DoxyCompactList}\small\item\em Set current status and clear status note. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classServiceBase_a53fb6df879cf953f56eb12ac7862b759}{
string {\bfseries \_\-name}}
\label{classServiceBase_a53fb6df879cf953f56eb12ac7862b759}

\item 
\hypertarget{classServiceBase_a6b7cfc181496e17d04d772012484eb1b}{
ServiceStatus {\bfseries \_\-status}}
\label{classServiceBase_a6b7cfc181496e17d04d772012484eb1b}

\item 
\hypertarget{classServiceBase_aadd94eaec2af281f5d342d7ec4977a4d}{
string {\bfseries \_\-note}}
\label{classServiceBase_aadd94eaec2af281f5d342d7ec4977a4d}

\item 
\hypertarget{classServiceBase_a5fa2720e716cefdcb06525bf5812553a}{
\hyperlink{classServiceChangeObserverBase}{ServiceChangeObserverBase} $\ast$ {\bfseries \_\-observer}}
\label{classServiceBase_a5fa2720e716cefdcb06525bf5812553a}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
Base class for Services. This class provides a base for services within Xorp processes. A service instance is an entity that can logically started and stopped and typically needs some asynchronous processing in order to start and stop. An example service within a routing process would be a \hyperlink{classRIB}{RIB} communicator service, which needs to co-\/ordinate with \hyperlink{protocolthe-p}{the} \hyperlink{classRIB}{RIB} which is within a different process and may be on a different machine.

A service may be started and shutdown by calling \hyperlink{classServiceBase_a791755872b2056ddd82a2f00904c7d2b}{startup()} and \hyperlink{classServiceBase_a6ad34506fd5a446d5667abcb2e1b593b}{shutdown()}. The status of a service may be determined by calling \hyperlink{classServiceBase_a90a2baa98739294468a33df22fa985c4}{status()}. Additional notes on \hyperlink{protocolthe-p}{the} current status may be obtained by calling \hyperlink{classServiceBase_a707e988f0d34ad0c7d44a7280bdfdfba}{status\_\-note()}.

Synchronous service status changes may be received through \hyperlink{protocolthe-p}{the} \hyperlink{classServiceChangeObserverBase}{ServiceChangeObserverBase} class. Instances of objects derived from this class can register for status change notifications in a Service instance by calling \hyperlink{classServiceBase_a2d3c8766100851b234922f235662625c}{set\_\-observer()}. 

\subsection{Member Function Documentation}
\hypertarget{classServiceBase_ac68898c4b8fe68735d3960fb2a710e94}{
\index{ServiceBase@{ServiceBase}!pause@{pause}}
\index{pause@{pause}!ServiceBase@{ServiceBase}}
\subsubsection[{pause}]{\setlength{\rightskip}{0pt plus 5cm}int ServiceBase::pause (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classServiceBase_ac68898c4b8fe68735d3960fb2a710e94}


\hyperlink{classPause}{Pause} service. 

Service should transition from SERVICE\_\-RUNNING to SERVICE\_\-PAUSING and asynchronously into SERVICE\_\-PAUSED.

The default implementation always returns false as there is no default behaviour.

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classServiceBase_a80c60918af5e7d14ff077916c047ff38}{
\index{ServiceBase@{ServiceBase}!reset@{reset}}
\index{reset@{reset}!ServiceBase@{ServiceBase}}
\subsubsection[{reset}]{\setlength{\rightskip}{0pt plus 5cm}int ServiceBase::reset (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classServiceBase_a80c60918af5e7d14ff077916c047ff38}


Reset service. 

Service should transition in SERVICE\_\-READY from whichever state it is in.

The default implementation always returns false as there is no default behaviour.

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Reimplemented in \hyperlink{classProtoState_a4acd466e6528999024f02e00547e5f62}{ProtoState}.

\hypertarget{classServiceBase_a163e6ef21623c8000708f3b8fdfdae15}{
\index{ServiceBase@{ServiceBase}!resume@{resume}}
\index{resume@{resume}!ServiceBase@{ServiceBase}}
\subsubsection[{resume}]{\setlength{\rightskip}{0pt plus 5cm}int ServiceBase::resume (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classServiceBase_a163e6ef21623c8000708f3b8fdfdae15}


Resume paused service. 

Service should transition from SERVICE\_\-PAUSED to SERVICE\_\-PAUSING and asynchronously into SERVICE\_\-RUNNING.

The default implementation always returns false as there is no default behaviour.

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classServiceBase_a1329d4844ec476bb8944981989456b94}{
\index{ServiceBase@{ServiceBase}!service\_\-name@{service\_\-name}}
\index{service\_\-name@{service\_\-name}!ServiceBase@{ServiceBase}}
\subsubsection[{service\_\-name}]{\setlength{\rightskip}{0pt plus 5cm}const string\& ServiceBase::service\_\-name (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classServiceBase_a1329d4844ec476bb8944981989456b94}


Get name of service. 

\begin{DoxyReturn}{Returns}
name of service. May be empty if not set in constructor. 
\end{DoxyReturn}
\hypertarget{classServiceBase_a2d3c8766100851b234922f235662625c}{
\index{ServiceBase@{ServiceBase}!set\_\-observer@{set\_\-observer}}
\index{set\_\-observer@{set\_\-observer}!ServiceBase@{ServiceBase}}
\subsubsection[{set\_\-observer}]{\setlength{\rightskip}{0pt plus 5cm}int ServiceBase::set\_\-observer (
\begin{DoxyParamCaption}
\item[{{\bf ServiceChangeObserverBase} $\ast$}]{so}
\end{DoxyParamCaption}
)}}
\label{classServiceBase_a2d3c8766100851b234922f235662625c}


Set service status change observer. 

The observer will receive synchronous notifications of changes in service state.


\begin{DoxyParams}{Parameters}
{\em so} & service change observer to add. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classServiceBase_a4faa52a91529e78454e6e2226402d604}{
\index{ServiceBase@{ServiceBase}!set\_\-status@{set\_\-status}}
\index{set\_\-status@{set\_\-status}!ServiceBase@{ServiceBase}}
\subsubsection[{set\_\-status}]{\setlength{\rightskip}{0pt plus 5cm}void ServiceBase::set\_\-status (
\begin{DoxyParamCaption}
\item[{ServiceStatus}]{status}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected\mbox{]}}}}
\label{classServiceBase_a4faa52a91529e78454e6e2226402d604}


Set current status and clear status note. 


\begin{DoxyParams}{Parameters}
{\em status} & new status. \\
\hline
\end{DoxyParams}
\hypertarget{classServiceBase_af76e794839ca188fc4d41261e833abce}{
\index{ServiceBase@{ServiceBase}!set\_\-status@{set\_\-status}}
\index{set\_\-status@{set\_\-status}!ServiceBase@{ServiceBase}}
\subsubsection[{set\_\-status}]{\setlength{\rightskip}{0pt plus 5cm}void ServiceBase::set\_\-status (
\begin{DoxyParamCaption}
\item[{ServiceStatus}]{status, }
\item[{const string \&}]{note}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected\mbox{]}}}}
\label{classServiceBase_af76e794839ca188fc4d41261e833abce}


Set current status. 


\begin{DoxyParams}{Parameters}
{\em status} & new status. \\
\hline
{\em note} & comment on new service status. \\
\hline
\end{DoxyParams}
\hypertarget{classServiceBase_a6ad34506fd5a446d5667abcb2e1b593b}{
\index{ServiceBase@{ServiceBase}!shutdown@{shutdown}}
\index{shutdown@{shutdown}!ServiceBase@{ServiceBase}}
\subsubsection[{shutdown}]{\setlength{\rightskip}{0pt plus 5cm}virtual int ServiceBase::shutdown (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classServiceBase_a6ad34506fd5a446d5667abcb2e1b593b}


\hyperlink{classShutdown}{Shutdown} service. 

Service should transition from SERVICE\_\-RUNNING to SERVICE\_\-SHUTTING\_\-DOWN immediately and onto SERVICE\_\-SHUTDOWN or SERVICE\_\-FAILED in \hyperlink{protocolthe-p}{the} near future.

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implemented in \hyperlink{classBGPMain_abc688835e38a28ae8278ed1ed26b8832}{BGPMain}, \hyperlink{classXrlMld6igmpNode_af69a7c7cb84ff9d379fd5721679d8ae5}{XrlMld6igmpNode}, \hyperlink{classDebugIO_ac3333bd6ad967c11c9f400297b82767d}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_a3f7a0862d56dbab3dc5406cb7ee1fe10}{XrlIO$<$ A $>$}, \hyperlink{classXrlPort_a61417d22f531ffbe363f673b41faee6c}{XrlPort}, \hyperlink{classInterfaceMonitor_a147631a33362be5154883491f1d096f0}{InterfaceMonitor}, \hyperlink{classXrlMfeaNode_afc037034880b4793b289ba8338894e7f}{XrlMfeaNode}, \hyperlink{classFib2mribNode_a4bf9931df9521a0019a0b25c73a92e51}{Fib2mribNode}, \hyperlink{classXrlFib2mribNode_ac674d5dff381c9adbbb38541487f3a51}{XrlFib2mribNode}, \hyperlink{classIfMgrXrlMirror_a18a46ecae9a1004751ef1c3077bc99a1}{IfMgrXrlMirror}, \hyperlink{classProtoState_a125aaf4996706748d991679b61508bc7}{ProtoState}, \hyperlink{classTestService_af751b12353f6d8210c03b8ab92a2b506}{TestService}, \hyperlink{classXrlMld6igmpNode_af69a7c7cb84ff9d379fd5721679d8ae5}{XrlMld6igmpNode}, \hyperlink{classAreaRouter_ab736a45a2a61d70cc08523e8236d3e44}{AreaRouter$<$ A $>$}, \hyperlink{classDebugIO_ac3333bd6ad967c11c9f400297b82767d}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_a3f7a0862d56dbab3dc5406cb7ee1fe10}{XrlIO$<$ A $>$}, \hyperlink{classXrlPimNode_a444321b033afebcf71e9d2c604f4c753}{XrlPimNode}, \hyperlink{classShowDistancesProcessor_a284f7a865865e379ea424917e03ab4fd}{ShowDistancesProcessor}, \hyperlink{classShowRoutesProcessor_a10b1104e32c80f50edfd2427b2910803}{ShowRoutesProcessor}, \hyperlink{classXrlJobQueue_a5f5a1b5ad3d86d841a35c13939cc417a}{XrlJobQueue}, \hyperlink{classXrlPortIO_a70fa396b6e75456754cfaae16dd68140}{XrlPortIO$<$ A $>$}, \hyperlink{classXrlPortManager_a34b9857945a6d35aa23620388e9c6683}{XrlPortManager$<$ A $>$}, \hyperlink{classXrlProcessSpy_a7cd0f6bf986e8fe7e518a9c42bf9ddf4}{XrlProcessSpy}, \hyperlink{classXrlRedistManager_a52f3e7b4e89311efab4c97c3ac60bf47}{XrlRedistManager$<$ A $>$}, \hyperlink{classXrlRibNotifier_ad53640a83918a48a923cfd9856dfc412}{XrlRibNotifier$<$ A $>$}, \hyperlink{classStaticRoutesNode_ade59989dd531a8352963482ce4f5d408}{StaticRoutesNode}, \hyperlink{classXrlStaticRoutesNode_a6e4282f9d0bcccddd3d2d310b549206f}{XrlStaticRoutesNode}, \hyperlink{classXrlIO_a3f7a0862d56dbab3dc5406cb7ee1fe10}{XrlIO$<$ IPv4 $>$}, \hyperlink{classXrlIO_a3f7a0862d56dbab3dc5406cb7ee1fe10}{XrlIO$<$ IPv4 $>$}, \hyperlink{classXrlPortManager_a34b9857945a6d35aa23620388e9c6683}{XrlPortManager$<$ IPv6 $>$}, \hyperlink{classXrlPortManager_a34b9857945a6d35aa23620388e9c6683}{XrlPortManager$<$ IPv4 $>$}, \hyperlink{classXrlRedistManager_a52f3e7b4e89311efab4c97c3ac60bf47}{XrlRedistManager$<$ IPv6 $>$}, and \hyperlink{classXrlRedistManager_a52f3e7b4e89311efab4c97c3ac60bf47}{XrlRedistManager$<$ IPv4 $>$}.

\hypertarget{classServiceBase_a791755872b2056ddd82a2f00904c7d2b}{
\index{ServiceBase@{ServiceBase}!startup@{startup}}
\index{startup@{startup}!ServiceBase@{ServiceBase}}
\subsubsection[{startup}]{\setlength{\rightskip}{0pt plus 5cm}virtual int ServiceBase::startup (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classServiceBase_a791755872b2056ddd82a2f00904c7d2b}


Start service. 

Service should transition from SERVICE\_\-READY to SERVICE\_\-STARTING immediately and onto SERVICE\_\-RUNNING or SERVICE\_\-FAILED in \hyperlink{protocolthe-p}{the} near future.

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implemented in \hyperlink{classBGPMain_a7eba3521fba92c14c9ce4e584b9e2499}{BGPMain}, \hyperlink{classXrlMld6igmpNode_a9566a40efbdf79965025f29e9dde77bf}{XrlMld6igmpNode}, \hyperlink{classDebugIO_a26bb54549f66eff3e34db3e7feb0ddf3}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_a65eb1ca7813cfc58630d0a1720804bf1}{XrlIO$<$ A $>$}, \hyperlink{classXrlPort_a54dd8c5e15759f0e02c372f4440795e7}{XrlPort}, \hyperlink{classInterfaceMonitor_a69f4636decacbb13d6f4a92432cdceda}{InterfaceMonitor}, \hyperlink{classXrlMfeaNode_a26cb964309cefe5e46b70cbd706ac754}{XrlMfeaNode}, \hyperlink{classFib2mribNode_a876a14b8d8d08e1a769770658c680391}{Fib2mribNode}, \hyperlink{classXrlFib2mribNode_a97b094cd05c5f0eb2a0e7edc1e8c89a2}{XrlFib2mribNode}, \hyperlink{classIfMgrXrlMirror_a4a7257c1a25ff9f42d3cd532f41cd63c}{IfMgrXrlMirror}, \hyperlink{classProtoState_acd5b3d7a1b37e45893012210943926df}{ProtoState}, \hyperlink{classTestService_a7a7405321124b5f572263b914dc88a2e}{TestService}, \hyperlink{classXrlMld6igmpNode_a9566a40efbdf79965025f29e9dde77bf}{XrlMld6igmpNode}, \hyperlink{classAreaRouter_aa002ddc87b036cea1c5721a3ef716b43}{AreaRouter$<$ A $>$}, \hyperlink{classDebugIO_a26bb54549f66eff3e34db3e7feb0ddf3}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_a65eb1ca7813cfc58630d0a1720804bf1}{XrlIO$<$ A $>$}, \hyperlink{classXrlPimNode_a696892e4c742605af614926374837c76}{XrlPimNode}, \hyperlink{classShowDistancesProcessor_ab59bde30a8aecb27dbbcdc214e4dc396}{ShowDistancesProcessor}, \hyperlink{classShowRoutesProcessor_a45a310a5eb6aa845f731f4228c64cf0e}{ShowRoutesProcessor}, \hyperlink{classXrlJobQueue_aaa10f1b613619228a48240a7d41a6f66}{XrlJobQueue}, \hyperlink{classXrlPortIO_a75251aecfa86d0b2ca39ae2eb14e42bf}{XrlPortIO$<$ A $>$}, \hyperlink{classXrlPortManager_aef92cc4c81bf885ca42b54f6278db6c5}{XrlPortManager$<$ A $>$}, \hyperlink{classXrlProcessSpy_aab0889523823ffd909f171d95870acf7}{XrlProcessSpy}, \hyperlink{classXrlRedistManager_a0bbd8ee12e9d4c243341695e91900e7e}{XrlRedistManager$<$ A $>$}, \hyperlink{classXrlRibNotifier_a078d989a14f8836472ee9af87549a6c0}{XrlRibNotifier$<$ A $>$}, \hyperlink{classStaticRoutesNode_a640c04f2536daf3bdb2703d925b0348d}{StaticRoutesNode}, \hyperlink{classXrlStaticRoutesNode_a7db0351c50bcb8ae0ceffc6097ea9aff}{XrlStaticRoutesNode}, \hyperlink{classXrlIO_a65eb1ca7813cfc58630d0a1720804bf1}{XrlIO$<$ IPv4 $>$}, \hyperlink{classXrlIO_a65eb1ca7813cfc58630d0a1720804bf1}{XrlIO$<$ IPv4 $>$}, \hyperlink{classXrlPortManager_aef92cc4c81bf885ca42b54f6278db6c5}{XrlPortManager$<$ IPv6 $>$}, \hyperlink{classXrlPortManager_aef92cc4c81bf885ca42b54f6278db6c5}{XrlPortManager$<$ IPv4 $>$}, \hyperlink{classXrlRedistManager_a0bbd8ee12e9d4c243341695e91900e7e}{XrlRedistManager$<$ IPv6 $>$}, and \hyperlink{classXrlRedistManager_a0bbd8ee12e9d4c243341695e91900e7e}{XrlRedistManager$<$ IPv4 $>$}.

\hypertarget{classServiceBase_a707e988f0d34ad0c7d44a7280bdfdfba}{
\index{ServiceBase@{ServiceBase}!status\_\-note@{status\_\-note}}
\index{status\_\-note@{status\_\-note}!ServiceBase@{ServiceBase}}
\subsubsection[{status\_\-note}]{\setlength{\rightskip}{0pt plus 5cm}const string\& ServiceBase::status\_\-note (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classServiceBase_a707e988f0d34ad0c7d44a7280bdfdfba}


Get annotation associated with current status. 

The annotation when set is an explanation of \hyperlink{protocolthe-p}{the} state, ie \char`\"{}waiting for Y\char`\"{} \hypertarget{classServiceBase_a0ee5501501fa77d5316e92f6afdd324d}{
\index{ServiceBase@{ServiceBase}!unset\_\-observer@{unset\_\-observer}}
\index{unset\_\-observer@{unset\_\-observer}!ServiceBase@{ServiceBase}}
\subsubsection[{unset\_\-observer}]{\setlength{\rightskip}{0pt plus 5cm}int ServiceBase::unset\_\-observer (
\begin{DoxyParamCaption}
\item[{{\bf ServiceChangeObserverBase} $\ast$}]{so}
\end{DoxyParamCaption}
)}}
\label{classServiceBase_a0ee5501501fa77d5316e92f6afdd324d}


Remove service status change observer. 


\begin{DoxyParams}{Parameters}
{\em so} & observer to remove. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


The documentation for this class was generated from the following files:\begin{DoxyCompactItemize}
\item 
/home/greearb/git/xorp.ct.github/xorp/libxorp/service.hh\item 
/home/greearb/git/xorp.ct.github/xorp/libxorp/service.cc\end{DoxyCompactItemize}
