<!--

     This is a DTD for flood configuration files.
     With this file, validating XML software and
     heading line:

     <!DOCTYPE flood SYSTEM "flood.dtd">

     ...you can make sure your flood configuration
     is valid (in contrast to just "well-formed").

-->
<!ELEMENT flood (urllist+,profile+,farmer+,farm+,seed?,subst_list?)>

<!-- urllist -->
<!ELEMENT urllist (name,description?,baseurl?,(url|sequence)+)>

<!ELEMENT name (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT baseurl (#PCDATA)>

<!ELEMENT url (#PCDATA)>

<!ATTLIST url method (GET | POST | HEAD) #IMPLIED>
<!ATTLIST url payload CDATA #IMPLIED>
<!ATTLIST url payloadparam CDATA #IMPLIED>
<!ATTLIST url payloadparamcount CDATA #IMPLIED>
<!ATTLIST url payloadtemplate CDATA #IMPLIED>
<!ATTLIST url responsename CDATA #IMPLIED>
<!ATTLIST url responsetemplate CDATA #IMPLIED>
<!ATTLIST url requesttemplate CDATA #IMPLIED>
<!ATTLIST url requestparamcount CDATA #IMPLIED>
<!ATTLIST url predelay CDATA #IMPLIED>
<!ATTLIST url predelayprecision CDATA #IMPLIED>
<!ATTLIST url postdelay CDATA #IMPLIED>
<!ATTLIST url postdelayprecision CDATA #IMPLIED>
<!ATTLIST url user CDATA #IMPLIED>
<!ATTLIST url password CDATA #IMPLIED>
<!ATTLIST url Content-Type CDATA #IMPLIED>

<!ELEMENT sequence (url+)>

<!ATTLIST sequence sequencename CDATA #REQUIRED>
<!ATTLIST sequence sequencelist CDATA #REQUIRED>

<!-- subst_list -->
<!--
<!ELEMENT subst_list (subst_entry|subst_seq)>
<!ELEMENT subst_entry (subst_file, subst_var)>
<!ELEMENT subst_file (#PCDATA)>
<!ELEMENT subst_var (#PCDATA)>
<!ELEMENT subst_seq (subst_list+)>

-->
<!-- profile -->

<!ENTITY % profile.events "(profile_init?,get_next_url?,create_req?,postprocess?,loop_condition?,profile_destroy?)+">
<!ENTITY % socket.events "(socket_init?,begin_conn?,send_req?,recv_resp?,end_conn?,request_destroy?,response_destroy?,socket_destroy?)+">
<!ENTITY % report.events "(report_init?,process_stats?,report_stats?,destroy_report?)+">

<!-- FIXME: this declaration doesn't exactly cover the flexibility of profile -->

<!ELEMENT profile (name,(description)?,useurllist,
                   (profiletype|%profile.events;),
                   (socket|%socket.events;),
                   verify_resp,
                   (report|%report.events;))>

<!ELEMENT useurllist (#PCDATA)>
<!ELEMENT profiletype (#PCDATA)>
<!ELEMENT socket (#PCDATA)>
<!ELEMENT verify_resp (#PCDATA)>
<!ELEMENT report (#PCDATA)>

<!ELEMENT profile_init (#PCDATA)>
<!ELEMENT get_next_url (#PCDATA)>
<!ELEMENT create_req (#PCDATA)>
<!ELEMENT postprocess (#PCDATA)>
<!ELEMENT loop_condition (#PCDATA)>
<!ELEMENT profile_destroy (#PCDATA)>

<!ELEMENT report_init (#PCDATA)>
<!ELEMENT process_stats (#PCDATA)>
<!ELEMENT report_stats (#PCDATA)>
<!ELEMENT destroy_report (#PCDATA)>

<!ELEMENT socket_init (#PCDATA)>
<!ELEMENT begin_conn (#PCDATA)>
<!ELEMENT send_req (#PCDATA)>
<!ELEMENT recv_resp (#PCDATA)>
<!ELEMENT end_conn (#PCDATA)>
<!ELEMENT request_destroy (#PCDATA)>
<!ELEMENT response_destroy (#PCDATA)>
<!ELEMENT socket_destroy (#PCDATA)>

<!-- farmer -->

<!ELEMENT farmer (name,description?,(count|time),useprofile+)>

<!ELEMENT count (#PCDATA)>
<!ELEMENT time (#PCDATA)>
<!ELEMENT useprofile (#PCDATA)>

<!-- farm -->

<!ELEMENT farm (name,description?,usefarmer+)>

<!ELEMENT usefarmer (#PCDATA)>

<!ATTLIST usefarmer count CDATA #IMPLIED>
<!ATTLIST usefarmer startcount CDATA #IMPLIED>
<!ATTLIST usefarmer startdelay CDATA #IMPLIED>

<!-- seed -->

<!ELEMENT seed (#PCDATA)>

