% programmer_manual

In this section the tool architecture and all its feature are explained in details, with a code function presentation for each part of the tool.
The code language chosen for the orchestration tool is Java and also all the additional tools are written in the same language, in this way they could be well integrated.
The input and the output data are XML files and validated by XSD schemas, they are handled by API provided by JAVA for the XML Processing (JAXB). The architecture presents REST API to accept the input and to allow the administrator to retrieve the output of the rule distribution.
In this tool there are external libraries from different projects:

\begin{itemize}
	\item
	policy managment: \textit{it.polito.policytoollib}, to use directly the source code;
	\item
	virtual switch managment: \textit{floodlight.jar};
	\item
	server: \textit{tomcat-dbcp.jar}, \textit{tomcat-embed-core.jar}, \textit{tomcat-embed-el.jar}, \textit{tomcat-embed-jasper.jar}, \textit{tomcat-embed-websocket.jar}.
	\item
	REST DataBase management: \textit{hk2-api-2.6.1.jar}, \textit{hk2-core-2.6.1.jar}, \textit{hk2-locator-2.6.1.jar}, \textit{hk2-utils-2.6.1.jar};
	\item
	Jersey and JAXB: \textit{jaxrs-ri-2.30.1.jar};
	\item
	SAT Solver: \textit{com.microsoft.z3.jar}
\end{itemize}

%\section{Input schemas}

%\section{Physical topology}
%\input {latex_files/programmer_manual/physical_topology.tex}
\section{Performance tool}\label{lab:performance_tool}
\input{latex_files/programmer_manual/performance_tool.tex}
\section{Prover tool}
\input{latex_files/programmer_manual/optimize_tool.tex}
\section{Optimal Distribution tool}
\input{latex_files/programmer_manual/rule_distribution_tool.tex}
%\section{RESTful web service}
%\input{latex_files/programmer_manual/rest_service.tex}
