<?xml version="1.0"?>
-<!-- imagined config for yp2..
- The router system understands yp2, sequence and filter elements.
- Everything else interpreted by filters.
- Each filter is invoked in a sequence (unless a filter invokes another
- sequence.. A start sequence must be determined somehow.
- -->
-<yp2 xmlns="http://indexdata.dk/yp2/config/1">
- <start route="id_hytg"/>
+<metaproxy xmlns="http://indexdata.com/metaproxy" version="1.0">
+ <!-- Z39.50 proxy which relays to target specified in Init otherinfo
+ (VAL_RPOXY). If no target is given, it relays to target
+ z3950.indexdata.dk -->
+ <start route="start"/>
<filters>
- <filter id="front_default" type="frontend-net">
- <!-- the Z39.50/HTTP frontend -->
- <port>@:210</port>
+ <filter id="frontend" type="frontend_net">
+ <threads>10</threads>
+ <port>@:9000</port>
+ <message>FN</message>
</filter>
- <filter id="log_out" type="log"> <!-- apply logging always -->
- <logfile>out.log</logfile>
- </filter>
- <filter id="log_cerr" type="log"> <!-- apply logging always -->
- <logfile>std::cerr</logfile>
+ <filter id="backend" type="z3950_client">
+ <timeout>30</timeout>
+ <default_target>localhost:9999</default_target>
+ <force_close>true</force_close>
</filter>
</filters>
-
- <routes>
+ <routes>
<route id="start">
- <filter refid="log_cout"/>
- <filter type="cond"> <!-- conditional -->
- <if test="port=210 and db=public" route="A"/>
- <if test="port=210 and db=other" route="B"/>
- <switch>
- <case test="blabla" route="C"/>
- <case test="blabla2" route="C2"/>
- <default route="C3"/>
- </switch>
- </filter>
- <filter refid="log_out"/>
- <filter refid="log_cerr"/>
- <filter type="log"> <!-- apply logging always -->
- <logfile>mylog.log</logfile>
- </filter>
- <filter name="reject"> <!-- reject .. -->
- </filter>
- </route>
- <route id="public">
- <filter type="z3950-client">
- <target>localhost:9999/A</target>
- </filter>
- </route>
- <route id="internal">
- <filter type="z3950-client">
- <target>localhost:9999/B</target>
- </filter>
- </route>
- <route id="internal">
- <xml:include href="file://module2.xml#filter45"/>
- <xml:include href="file://module4.xml#filter145"/>
- </route>
- <route id="AB">
- <filter type="multi">
- <package route="A"/>
- <package route="B"/>
- <merge type="simple"/>
+ <filter refid="frontend"/>
+ <filter type="log">
+ <message>log</message>
</filter>
+ <filter type="sd_remove"/>
+ <filter refid="backend"/>
+ <filter type="bounce"/>
</route>
</routes>
-</yp2>
-
-<!-- functions:
- db returns Z39.50 database(s)
- path HTTP path
- HTTP-header Any HTTP header (including content-type)
- request-type Init,Search,HTTP,...
- origin IP of origin
- port Port
-
-
-mother object filter-dom-hash
- deletes pointers to contexts and filters on program exit
-hash filter-type -> hash-filter-id -> Context
- -> filter-binary-pointer
-
-moher object router pointer hash
-
-created in mother thread, read only structures.
-
-Context* filter.configure(dom );
-
-
-
-process(Context con)
-
-where each filter can have is own context class
-
-yp2::filter::Log::Context : public Context
-
-
-Filters are constructed with a FilterFactory class which exposes a
-method
-
-Filter* createFilter(std::string type)
-
- .. which returns a filter
-instance. (The interface pointer that is). The FilterFactory may later
-offer function
- loadModule(std::string filename);
-or even
- loadModules(std::string filenamemask);
-
-
-
--->
+</metaproxy>
-<!-- observation: the logic could be controlled by a XSLT! -->