X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fuwobo%2Fsrc%2Focaml%2Fuwobo_common.ml;h=1f7fb0328ae7e29d0edd801ef7201ed0b78da46e;hb=85ccebb566c36671ca753debe09e6dd5c9dd0df7;hp=5ead99a54dfecdae37ca96c80e56b76ba4b546ce;hpb=6391c90788217fbdd9c8e109b515c7a678a63bfd;p=helm.git diff --git a/helm/uwobo/src/ocaml/uwobo_common.ml b/helm/uwobo/src/ocaml/uwobo_common.ml index 5ead99a54..1f7fb0328 100644 --- a/helm/uwobo/src/ocaml/uwobo_common.ml +++ b/helm/uwobo/src/ocaml/uwobo_common.ml @@ -1,31 +1,32 @@ - -(* Copyright (C) 2002, HELM Team. - * - * This file is part of HELM, an Hypertextual, Electronic - * Library of Mathematics, developed at the Computer Science - * Department, University of Bologna, Italy. - * - * HELM is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * HELM is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. +(* + * Copyright (C) 2003: + * Stefano Zacchiroli + * for the HELM Team http://helm.cs.unibo.it/ + * + * This file is part of HELM, an Hypertextual, Electronic + * Library of Mathematics, developed at the Computer Science + * Department, University of Bologna, Italy. + * + * HELM is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * HELM is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with HELM; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, - * MA 02111-1307, USA. - * - * For details, see the HELM World-Wide-Web page, - * http://cs.unibo.it/helm/. + * You should have received a copy of the GNU General Public License + * along with HELM; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, + * MA 02111-1307, USA. + * + * For details, see the HELM World-Wide-Web page, + * http://helm.cs.unibo.it/ *) -let debug = false;; -let debug_print msg = if debug then prerr_endline msg;; +open Printf;; exception Uwobo_failure of string;; @@ -44,70 +45,67 @@ let supported_properties = [ let is_supported_property name = List.mem name supported_properties -class threadSafe = - object (self) - - val mutex = Mutex.create () - - (** condition variable: 'no readers is currently reading' *) - val noReaders = Condition.create () - - (** readers count *) - val mutable readersCount = 0 - - method private incrReadersCount = (* internal, not exported *) - self#doCritical (lazy ( - readersCount <- readersCount + 1 - )) - - method private decrReadersCount = (* internal, not exported *) - self#doCritical (lazy ( - if readersCount > 0 then readersCount <- readersCount - 1; - )) - - method private signalNoReaders = (* internal, not exported *) - self#doCritical (lazy ( - if readersCount = 0 then Condition.signal noReaders - )) - - method private doCritical: 'a. 'a lazy_t -> 'a = - fun action -> - debug_print ""; - (try - Mutex.lock mutex; - let res = Lazy.force action in - Mutex.unlock mutex; - debug_print ""; - res - with e -> - Mutex.unlock mutex; - raise e); - - method private doReader: 'a. 'a lazy_t -> 'a = - fun action -> - debug_print ""; - let cleanup () = - self#decrReadersCount; - self#signalNoReaders - in - self#incrReadersCount; - let res = (try Lazy.force action with e -> (cleanup (); raise e)) in - cleanup (); - debug_print ""; - res - - (* TODO may starve!!!! is what we want or not? *) - method private doWriter: 'a. 'a lazy_t -> 'a = - fun action -> - debug_print ""; - self#doCritical (lazy ( - while readersCount > 0 do - Condition.wait noReaders mutex - done; - let res = Lazy.force action in - debug_print ""; - res - )) +let usage_string = + sprintf +" + + + UWOBO's help message + + +

+ Usage: http://hostname:uwoboport/command +

+

+ Available commands: +

+

+ help
+ display this help message +

+

+ add?bind=key,uri[&bind=key,stylesheet[&...]]
+ load a new stylesheet, specified by uri, and bind it to key + key +

+

+ remove?[?keys=key1,key2,...]
+ unload stylesheets specified by key1, key2, ... or all + stylesheets if no key was given +

+

+ reload?[?keys=key1,key2,...]
+ reload stylesheets specified by key1, key2, ... or all + stylesheets if no key was given +

+

+ list
+ return a list of loaded stylesheets +

+

+ apply?xmluri=uri&keys=key1,key2,...[¶m.name=value[¶m.name=value[&...]]][¶m.key.name=value[¶m.key.name=value[&...]]][&name[=value][&prop.name[=value][&...]]]
+ apply a chain of stylesheets, specified by key1, key2, ..., to an + input document, specified by uri.
+ Additional parameters can be set for each stylesheet application: global + parameters (i.e. parameters passed to all stylesheets) are set using + param.name=value syntax, per stylesheet parameters are set using + param.key.name=value where key is the key of a loaded + stylesheet.
+ Properties of the final chain output can be set too: valueless properties + can be set using prop.name syntax, others can be set using + prop.name=value syntax.
+ Current supported properties are: %s. +

+ + +" + (String.concat ", " supported_properties);; + +let pp_error = sprintf "

Error: %s

";; +let return_error msg outchan = + Http_daemon.respond ~body:(pp_error msg) outchan;; +let bad_request body outchan = + Http_daemon.respond_error ~code:400 ~body outchan +;; - end