]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/interface/xsltProcessor.ml
Support for automatic stylesheet configuration retrieval started
[helm.git] / helm / interface / xsltProcessor.ml
index b0ce618c3ad635ef6009a39db1cbe37d218af87f..63d0c1fa592e04eb1a502e10d436c04e4379c13b 100644 (file)
 exception XsltProcessorCouldNotSend;;
 exception XsltProcessorCouldNotReceive;;
 
+let initialize l =
+ List.iter
+  (function (name,key) ->
+    client_add (Configuration.getter_url ^ "getxslt?uri=" ^ name ^ "?key=" ^ key)
+  )
+
 let portserver = 12345;;
 let portclient = 12346;;
 let time_to_wait = 10;;
@@ -48,36 +54,30 @@ let rec process uri usecache mode =
       (* purge the cache if asked to *)
       if not usecache && tmp_file_exists then
         Sys.remove tmpfile ;
-      let string_to_send = mode ^ " " ^ url ^ " " ^ tmpfile in
+      (* let string_to_send = mode ^ " " ^ url ^ " " ^ tmpfile in *)
+      let string_to_send = "apply " ^ url ^ " " ^ tmpfile ^
+       match mode with
+          "cic" -> " C1 C2"
+       | "theory" -> " T1 T2"
+      in
       (* next function is for looping in case the server is not responding *)
-      let rec contact_server () =
-       let socketclient = U.socket U.PF_INET U.SOCK_DGRAM 0
-       and socketserver = U.socket U.PF_INET U.SOCK_DGRAM 0 in
-        let bounded = ref false in
-         while not !bounded do
-          try
-           U.bind socketclient (U.ADDR_INET(U.inet_addr_any,portclient)) ;
-           bounded := true
-          with _ ->
-           print_endline "Port unavailable. Retrying..." ; flush stdout ;
-           U.sleep 5  (* wait hoping the inetaddr is released *)
-         done ;
+       let socketserver = U.socket U.PF_INET U.SOCK_DGRAM 0 in
+        let rec contact_server () =
          let n =
           U.sendto socketserver string_to_send 0 (String.length string_to_send)
            [] (U.ADDR_INET(U.inet_addr_any,portserver))
          in
           if n = -1 then raise XsltProcessorCouldNotSend ;
-          U.close socketserver ;
-          let process_signal _ = U.close socketclient in
+          let process_signal _ = () in
           Sys.set_signal Sys.sigalrm (Sys.Signal_handle process_signal) ;
           (* if the server does not respond, repeat the query *)
           ignore (U.alarm time_to_wait) ;
           try
-           if U.recv socketclient "" 0 0 [] = -1 then
+           if U.recv socketserver "" 0 0 [] = -1 then
             raise XsltProcessorCouldNotReceive ;
            ignore (U.alarm 0) ; (* stop the bomb *)
            Sys.set_signal Sys.sigalrm Sys.Signal_default ;
-           U.close socketclient ;
+           U.close socketserver ;
            tmpfile
           with
            U.Unix_error(_,"recv",_) ->
@@ -85,5 +85,5 @@ let rec process uri usecache mode =
             flush stdout;
             contact_server ()
         in
-         contact_server ()
+        contact_server ()
 ;;