|  |  | 
  
    |  |  | 
 
  |   |  | 
  
    |  |  | 
  
    |  |  | 
  
    |   xen-api
[Xen-API] [PATCH] CA-40030: Option to remove an event by name from	the p 
| # HG changeset patch
# User Rob Hoes <rob.hoes@xxxxxxxxxx>
CA-40030: Option to remove an event by name from the periodic scheduler
Signed-off-by: Rob Hoes <rob.hoes@xxxxxxxxxx>
diff -r b9d60623be93 ocaml/xapi/ipq.ml
--- a/ocaml/xapi/ipq.ml Fri Apr 09 12:46:19 2010 +0100
+++ b/ocaml/xapi/ipq.ml Fri Apr 09 14:08:56 2010 +0100
@@ -92,7 +92,15 @@
     | m -> if ev = h.data.(n).ev then n else iter (n-1)
   in
   iter (h.size-1)
-
+  
+let find_p h f =
+  let rec iter n =
+    match n with
+      -1 -> -1
+    | m -> if f h.data.(n).ev then n else iter (n-1)
+  in
+  iter (h.size-1)
+  
 let pop_maximum h = let m = maximum h in remove h 0; m
   
 let iter f h = 
diff -r b9d60623be93 ocaml/xapi/xapi_periodic_scheduler.ml
--- a/ocaml/xapi/xapi_periodic_scheduler.ml     Fri Apr 09 12:46:19 2010 +0100
+++ b/ocaml/xapi/xapi_periodic_scheduler.ml     Fri Apr 09 14:08:56 2010 +0100
@@ -36,6 +36,12 @@
     Ipq.add queue { Ipq.ev={ func=newfunc; ty=ty; name=name}; 
Ipq.time=((Unix.gettimeofday ()) +. start) });
   if signal then Delay.signal delay
 
+let remove_from_queue name =
+       debug "Removing function %s from queue" name;
+       let index = Ipq.find_p queue (fun {name=n} -> name = n) in
+       if index > -1 then
+               Ipq.remove queue index
+  
 let loop () =
     debug "Periodic scheduler started";
     while true do
diff -r b9d60623be93 ocaml/xapi/xapi_periodic_scheduler.mli
--- a/ocaml/xapi/xapi_periodic_scheduler.mli    Fri Apr 09 12:46:19 2010 +0100
+++ b/ocaml/xapi/xapi_periodic_scheduler.mli    Fri Apr 09 14:08:56 2010 +0100
@@ -22,6 +22,9 @@
 val add_to_queue :
   ?signal:bool -> string -> func_ty -> float -> (unit -> unit) -> unit
 
+(** Remove a scheduled item by name *)
+val remove_from_queue : string -> unit
+
 (** The scheduler's main loop, started by {!Xapi} on start-up. *)
 val loop : unit -> unit
 
 remove-from-scheduler Description: Text document
 _______________________________________________
xen-api mailing list
xen-api@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/mailman/listinfo/xen-api
 | 
 
| <Prev in Thread] | Current Thread | [Next in Thread> |  | 
[Xen-API] [PATCH] CA-40030: Option to remove an event by name from	the periodic scheduler,
Rob Hoes <=
 |  |  | 
  
    |  |  |