8 #include "filter_frontend_net.hpp"
11 #include "session.hpp"
12 #include "package.hpp"
14 class FilterInit: public yp2::Filter {
16 void process(yp2::Package & package) const {
18 if (package.session().is_closed())
20 // std::cout << "Got Close.\n";
23 Z_GDU *gdu = package.request().get();
26 ODR odr = odr_createmem(ODR_ENCODE);
30 // std::cout << "Got PDU. Sending init response\n";
31 Z_APDU *apdu = zget_APDU(odr, Z_APDU_initResponse);
33 apdu->u.initResponse->implementationName = "YP2/YAZ";
35 package.response() = apdu;
37 case Z_GDU_HTTP_Request:
38 Z_GDU *gdu = z_get_HTTP_Response(odr, 200);
39 Z_HTTP_Response *http_res = gdu->u.HTTP_Response;
41 z_HTTP_header_add(odr, &http_res->headers,
42 "Content-Type", "text/plain");
44 http_res->content_buf =
45 odr_strdup(odr, "Welcome to YP2");
46 http_res->content_len = strlen(http_res->content_buf);
48 package.response() = gdu;
55 return package.move();
59 int main(int argc, char **argv)
64 yp2::RouterChain router;
66 // put in frontend first
67 yp2::FilterFrontendNet filter_front;
68 filter_front.listen_address() = "tcp:@:9999";
70 // 0=no time, >0 timeout in seconds
71 filter_front.listen_duration() = 0;
72 router.rule(filter_front);
75 FilterInit filter_init;
76 router.rule(filter_init);
80 yp2::Package pack(session, origin);
82 pack.router(router).move();
86 std::cerr << "unknown exception\n";
94 * indent-tabs-mode: nil
96 * vim: shiftwidth=4 tabstop=8 expandtab