\hypertarget{ecore_con_server_simple_example_8c-example}{}\doxysection{ecore\+\_\+con\+\_\+server\+\_\+simple\+\_\+example.\+c}
Shows how to setup a simple server that accepts client connections and sends a \char`\"{}hello\char`\"{} string to them. See the complete example description at \mbox{\hyperlink{ecore_con_server_simple_example_c}{Ecore\+\_\+\+Con -\/ Creating a server}}


\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{\textcolor{comment}{//Compile with:}}
\DoxyCodeLine{\textcolor{comment}{// gcc -\/o ecore\_con\_server\_simple\_example ecore\_con\_server\_simple\_example.c `pkg-\/config -\/-\/libs -\/-\/cflags ecore ecore-\/con eina`}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{preprocessor}{\#include <stdio.h>}}
\DoxyCodeLine{\textcolor{preprocessor}{\#include <Ecore.h>}}
\DoxyCodeLine{\textcolor{preprocessor}{\#include <Ecore\_Con.h>}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{struct }\_Client}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \textcolor{keywordtype}{int} sdata;}
\DoxyCodeLine{\};}
\DoxyCodeLine{}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}}}
\DoxyCodeLine{\_add(\textcolor{keywordtype}{void} *data \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \textcolor{keywordtype}{int} type \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \mbox{\hyperlink{struct__Ecore__Con__Event__Client__Add}{Ecore\_Con\_Event\_Client\_Add}} *ev)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \textcolor{keywordtype}{char} welcome[] = \textcolor{stringliteral}{"hello! -\/ sent from the server"};}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Con__Server__Group_ga80f90f9716013d6104624c2e606f8915}{Ecore\_Con\_Server}} *srv;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Con__Client__Group_gae9afe250f5420f4731d1a94050275756}{Ecore\_Con\_Client}} *cl;}
\DoxyCodeLine{   \textcolor{keyword}{const} \mbox{\hyperlink{struct__Eina__List}{Eina\_List}} *clients, *l;}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keyword}{struct }\_Client *client = malloc(\textcolor{keyword}{sizeof}(*client));}
\DoxyCodeLine{   client-\/>sdata = 0;}
\DoxyCodeLine{}
\DoxyCodeLine{   printf(\textcolor{stringliteral}{"Client with ip \%s, port \%d, connected = \%d!\(\backslash\)n"},}
\DoxyCodeLine{          \mbox{\hyperlink{group__Ecore__Con__Client__Group_gac2af46d20219cda762c5fb9aa10f0a91}{ecore\_con\_client\_ip\_get}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Add_a9877727e79213077e8592dfca5895cbe}{client}}),}
\DoxyCodeLine{          \mbox{\hyperlink{group__Ecore__Con__Client__Group_ga555c9fd886a4833006888e685565ad03}{ecore\_con\_client\_port\_get}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Add_a9877727e79213077e8592dfca5895cbe}{client}}),}
\DoxyCodeLine{          \mbox{\hyperlink{group__Ecore__Con__Client__Group_gaade0309ee7c315f7e54bc902078791e8}{ecore\_con\_client\_connected\_get}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Add_a9877727e79213077e8592dfca5895cbe}{client}}));}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Con__Client__Group_ga166fd469acaa809faa4247b12d79278f}{ecore\_con\_client\_send}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Add_a9877727e79213077e8592dfca5895cbe}{client}}, welcome, \textcolor{keyword}{sizeof}(welcome));}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Con__Client__Group_gaccf37688bb1ecbedc8791b5b43c1595c}{ecore\_con\_client\_flush}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Add_a9877727e79213077e8592dfca5895cbe}{client}});}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Con__Client__Group_gac96c76af4f6c9d842e52ea38312c73dd}{ecore\_con\_client\_timeout\_set}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Add_a9877727e79213077e8592dfca5895cbe}{client}}, 6);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Con__Client__Group_ga0c81c3b201d7fa6d48b6f5e99a651edc}{ecore\_con\_client\_data\_set}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Add_a9877727e79213077e8592dfca5895cbe}{client}}, client);}
\DoxyCodeLine{}
\DoxyCodeLine{   srv = \mbox{\hyperlink{group__Ecore__Con__Client__Group_ga180e16493463c8c4ff7b823fcb3c2618}{ecore\_con\_client\_server\_get}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Add_a9877727e79213077e8592dfca5895cbe}{client}});}
\DoxyCodeLine{   printf(\textcolor{stringliteral}{"Clients connected to this server:\(\backslash\)n"});}
\DoxyCodeLine{   clients = \mbox{\hyperlink{group__Ecore__Con__Server__Group_gaefa4c6dc8996acdca8683e766069b759}{ecore\_con\_server\_clients\_get}}(srv);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Eina__List__Group_gac6efafc19f526d916cdb9757240a8773}{EINA\_LIST\_FOREACH}}(clients, l, cl)}
\DoxyCodeLine{     printf(\textcolor{stringliteral}{"\%s\(\backslash\)n"}, \mbox{\hyperlink{group__Ecore__Con__Client__Group_gac2af46d20219cda762c5fb9aa10f0a91}{ecore\_con\_client\_ip\_get}}(cl));}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{return} \mbox{\hyperlink{group__Ecore__Main__Loop__Group_ga1ee9db07f9a46a8b20fb83e1c6dbed09}{ECORE\_CALLBACK\_RENEW}};}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}}}
\DoxyCodeLine{\_del(\textcolor{keywordtype}{void} *data \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \textcolor{keywordtype}{int} type \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \mbox{\hyperlink{struct__Ecore__Con__Event__Client__Del}{Ecore\_Con\_Event\_Client\_Del}} *ev)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \textcolor{keyword}{struct }\_Client *client;}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Del_a47278613bc4acaf1d9f3e8c217fd2035}{client}})}
\DoxyCodeLine{     \textcolor{keywordflow}{return} \mbox{\hyperlink{group__Ecore__Main__Loop__Group_ga1ee9db07f9a46a8b20fb83e1c6dbed09}{ECORE\_CALLBACK\_RENEW}};}
\DoxyCodeLine{}
\DoxyCodeLine{   client = \mbox{\hyperlink{group__Ecore__Con__Client__Group_ga34e96711b04adecc9ade2b1f3408c390}{ecore\_con\_client\_data\_get}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Del_a47278613bc4acaf1d9f3e8c217fd2035}{client}});}
\DoxyCodeLine{}
\DoxyCodeLine{   printf(\textcolor{stringliteral}{"Lost client with ip \%s!\(\backslash\)n"}, \mbox{\hyperlink{group__Ecore__Con__Client__Group_gac2af46d20219cda762c5fb9aa10f0a91}{ecore\_con\_client\_ip\_get}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Del_a47278613bc4acaf1d9f3e8c217fd2035}{client}}));}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (client)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        printf(\textcolor{stringliteral}{"Total data received from this client: \%d\(\backslash\)n"}, client-\/>sdata);}
\DoxyCodeLine{        free(client);}
\DoxyCodeLine{     \}}
\DoxyCodeLine{   printf(\textcolor{stringliteral}{"Client was connected for \%0.3f seconds.\(\backslash\)n"},}
\DoxyCodeLine{          \mbox{\hyperlink{group__Ecore__Con__Client__Group_ga6ce6fef375f4d5a0d28a513f2fc40023}{ecore\_con\_client\_uptime\_get}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Del_a47278613bc4acaf1d9f3e8c217fd2035}{client}}));}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Con__Client__Group_gaddd302cb689b5040363246a58f20a680}{ecore\_con\_client\_del}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Del_a47278613bc4acaf1d9f3e8c217fd2035}{client}});}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{return} \mbox{\hyperlink{group__Ecore__Main__Loop__Group_ga1ee9db07f9a46a8b20fb83e1c6dbed09}{ECORE\_CALLBACK\_RENEW}};}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}}}
\DoxyCodeLine{\_data(\textcolor{keywordtype}{void} *data \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \textcolor{keywordtype}{int} type \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \mbox{\hyperlink{struct__Ecore__Con__Event__Client__Data}{Ecore\_Con\_Event\_Client\_Data}} *ev)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \textcolor{keywordtype}{char} fmt[128];}
\DoxyCodeLine{   \textcolor{keyword}{struct }\_Client *client = \mbox{\hyperlink{group__Ecore__Con__Client__Group_ga34e96711b04adecc9ade2b1f3408c390}{ecore\_con\_client\_data\_get}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Data_a2c3e5b340b67fde235d2da9814f3d413}{client}});}
\DoxyCodeLine{}
\DoxyCodeLine{   snprintf(fmt, \textcolor{keyword}{sizeof}(fmt),}
\DoxyCodeLine{            \textcolor{stringliteral}{"Received \%i bytes from client \%s port \%d:\(\backslash\)n"}}
\DoxyCodeLine{            \textcolor{stringliteral}{">>>>>\(\backslash\)n"}}
\DoxyCodeLine{            \textcolor{stringliteral}{"\%\%.\%is\(\backslash\)n"}}
\DoxyCodeLine{            \textcolor{stringliteral}{">>>>>\(\backslash\)n"},}
\DoxyCodeLine{            ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Data_a6e87f88d094ec774fb22133a0632d8b3}{size}}, \mbox{\hyperlink{group__Ecore__Con__Client__Group_gac2af46d20219cda762c5fb9aa10f0a91}{ecore\_con\_client\_ip\_get}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Data_a2c3e5b340b67fde235d2da9814f3d413}{client}}),}
\DoxyCodeLine{            \mbox{\hyperlink{group__Ecore__Con__Client__Group_ga555c9fd886a4833006888e685565ad03}{ecore\_con\_client\_port\_get}}(ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Data_a2c3e5b340b67fde235d2da9814f3d413}{client}}), ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Data_a6e87f88d094ec774fb22133a0632d8b3}{size}});}
\DoxyCodeLine{}
\DoxyCodeLine{   printf(fmt, ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Data_a1e2cdb017a18b0515d2102edc016b4c5}{data}});}
\DoxyCodeLine{}
\DoxyCodeLine{   client-\/>sdata += ev-\/>\mbox{\hyperlink{struct__Ecore__Con__Event__Client__Data_a6e87f88d094ec774fb22133a0632d8b3}{size}};}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{return} \mbox{\hyperlink{group__Ecore__Main__Loop__Group_ga1ee9db07f9a46a8b20fb83e1c6dbed09}{ECORE\_CALLBACK\_RENEW}};}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keywordtype}{int}}
\DoxyCodeLine{main(\textcolor{keywordtype}{void})}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Con__Server__Group_ga80f90f9716013d6104624c2e606f8915}{Ecore\_Con\_Server}} *svr;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Con__Client__Group_gae9afe250f5420f4731d1a94050275756}{Ecore\_Con\_Client}} *cl;}
\DoxyCodeLine{   \textcolor{keyword}{const} \mbox{\hyperlink{struct__Eina__List}{Eina\_List}} *clients, *l;}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Eina__Main__Group_gafee4bfc0e509b6ffed6598edf6f4b3de}{eina\_init}}();}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Init__Group_ga77757609684a2c922dc5ec398274751b}{ecore\_init}}();}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Con__Lib__Group_gacf5ecf42c516bb9c8b6759721e9559bd}{ecore\_con\_init}}();}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!(svr = \mbox{\hyperlink{group__Ecore__Con__Server__Group_gaf450c4039d5e61d4f7a58d7b67efc1e8}{ecore\_con\_server\_add}}(ECORE\_CON\_REMOTE\_TCP, \textcolor{stringliteral}{"127.0.0.1"}, 8080, NULL)))}
\DoxyCodeLine{     exit(1);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Event__Group_gae75b0b1b2c50e73b8e42afc628b00a62}{ecore\_event\_handler\_add}}(\mbox{\hyperlink{group__Ecore__Con__Events__Group_ga2ccb9d84c4e5480a787e4672af3e353f}{ECORE\_CON\_EVENT\_CLIENT\_ADD}}, (\mbox{\hyperlink{group__Ecore__Event__Group_ga64b4df04cbafda481593d0bc29617c6d}{Ecore\_Event\_Handler\_Cb}})\_add, NULL);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Event__Group_gae75b0b1b2c50e73b8e42afc628b00a62}{ecore\_event\_handler\_add}}(\mbox{\hyperlink{group__Ecore__Con__Events__Group_ga0daddd73ab2ab92cbfd91f50ea344e12}{ECORE\_CON\_EVENT\_CLIENT\_DEL}}, (\mbox{\hyperlink{group__Ecore__Event__Group_ga64b4df04cbafda481593d0bc29617c6d}{Ecore\_Event\_Handler\_Cb}})\_del, NULL);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Event__Group_gae75b0b1b2c50e73b8e42afc628b00a62}{ecore\_event\_handler\_add}}(\mbox{\hyperlink{group__Ecore__Con__Events__Group_gafb9ce301001338915a45969e4d11d016}{ECORE\_CON\_EVENT\_CLIENT\_DATA}}, (\mbox{\hyperlink{group__Ecore__Event__Group_ga64b4df04cbafda481593d0bc29617c6d}{Ecore\_Event\_Handler\_Cb}})\_data, NULL);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Con__Server__Group_ga468eec82ada0234b6ea2b5b8d6e25407}{ecore\_con\_server\_timeout\_set}}(svr, 10);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Con__Server__Group_gabaef36c991be8922766611c75372ced4}{ecore\_con\_server\_client\_limit\_set}}(svr, 3, 0);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Main__Loop__Group_gaf103b9f668bb3e4fed12e52c6180132d}{ecore\_main\_loop\_begin}}();}
\DoxyCodeLine{}
\DoxyCodeLine{   clients = \mbox{\hyperlink{group__Ecore__Con__Server__Group_gaefa4c6dc8996acdca8683e766069b759}{ecore\_con\_server\_clients\_get}}(svr);}
\DoxyCodeLine{   printf(\textcolor{stringliteral}{"Clients connected to this server when exiting: \%d\(\backslash\)n"},}
\DoxyCodeLine{          \mbox{\hyperlink{group__Eina__List__Group_ga301729054a498a2df09a5f1dd760697e}{eina\_list\_count}}(clients));}
\DoxyCodeLine{   \mbox{\hyperlink{group__Eina__List__Group_gac6efafc19f526d916cdb9757240a8773}{EINA\_LIST\_FOREACH}}(clients, l, cl)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        printf(\textcolor{stringliteral}{"\%s\(\backslash\)n"}, \mbox{\hyperlink{group__Ecore__Con__Client__Group_gac2af46d20219cda762c5fb9aa10f0a91}{ecore\_con\_client\_ip\_get}}(cl));}
\DoxyCodeLine{        free(\mbox{\hyperlink{group__Ecore__Con__Client__Group_ga34e96711b04adecc9ade2b1f3408c390}{ecore\_con\_client\_data\_get}}(cl));}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   printf(\textcolor{stringliteral}{"Server was up for \%0.3f seconds\(\backslash\)n"},}
\DoxyCodeLine{          \mbox{\hyperlink{group__Ecore__Con__Server__Group_ga1f7c1040e60e9e9a53a9a01f70aa52b3}{ecore\_con\_server\_uptime\_get}}(svr));}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Con__Lib__Group_gaccfd8dd2a1187b71339b5cc39dc83938}{ecore\_con\_shutdown}}();}
\DoxyCodeLine{   \mbox{\hyperlink{group__Ecore__Init__Group_ga768298b932f18d7e7593a447493e5cde}{ecore\_shutdown}}();}
\DoxyCodeLine{   \mbox{\hyperlink{group__Eina__Main__Group_ga2c8b4020427108a30c44707af22c99d3}{eina\_shutdown}}();}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{return} 0;}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\end{DoxyCodeInclude}
 