Changeset 6667
- Timestamp:
- 06/20/09 12:53:58 (15 months ago)
- Location:
- trunk/liquidsoap/src/sources
- Files:
-
- 2 modified
-
req_equeue.ml (modified) (5 diffs)
-
req_queue.ml (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/liquidsoap/src/sources/req_equeue.ml
r6622 r6667 32 32 class equeue length default_duration timeout conservative = 33 33 object (self) 34 inherit Request_source.queued ~length ~default_duration 34 inherit Request_source.queued ~length ~default_duration 35 35 ~timeout ~conservative () as super 36 36 … … 73 73 ~descr:"Push a new request in the queue." 74 74 (make_n_add (Rqueue.push queue)) ; 75 let print_queue q = 75 let print_queue q = 76 76 String.concat " " 77 77 (List.map … … 80 80 in 81 81 Server.add ~ns "queue" 82 (fun _ -> print_queue self#copy_queue)83 ~descr:"Display current queue content for \84 both primary and secondary queues.";82 ~descr:"Display current queue content for \ 83 both primary and secondary queues." 84 (fun _ -> print_queue self#copy_queue) ; 85 85 Server.add ~ns "primary_queue" 86 (fun _ -> print_queue super#copy_queue) 87 ~descr:"Display current queue content for \ 88 the primary queue."; 86 ~descr:"Display current queue content for the primary queue." 87 (fun _ -> print_queue super#copy_queue) ; 89 88 Server.add ~ns "secondary_queue" 90 (fun _ -> print_queue (self#copy_queue_init [])) 91 ~descr:"Display current queue content for \ 92 the secondary queue."; 89 ~descr:"Display current queue content for the secondary queue." 90 (fun _ -> print_queue (self#copy_queue_init [])) ; 93 91 (* Since the queue command gives not only the pending queue, 94 92 * it can be useful to have the size of our queue *) 95 Server.add ~ns "pending_length" ~descr:"Return the length of the secondary queue." 93 Server.add ~ns "pending_length" 94 ~descr:"Return the length of the secondary queue." 96 95 (fun _ -> 97 96 string_of_int (Rqueue.length queue)) ; 98 97 Server.add ~ns "insert" ~usage:"insert <pos> <uri>" 98 ~descr:"Insert <uri> at position <pos> in the secondary queue." 99 99 (fun a -> 100 100 if Str.string_match insert_re a 0 then … … 103 103 make_n_add (Rqueue.insert queue pos) uri 104 104 else 105 "Usage: insert <pos> <uri>") 106 ~descr:"Insert <uri> at position <pos> in the secondary queue." ; 105 "Usage: insert <pos> <uri>") ; 107 106 Server.add ~ns "remove" ~usage:"remove <rid>" 107 ~descr:"Remove request <rid> from the secondary queue." 108 108 (fun a -> 109 109 let id = int_of_string a in … … 115 115 "OK" 116 116 with 117 | Rqueue.Not_found -> "No such request in my queue") 118 ~descr:"Remove request <rid> from the secondary queue." ; 119 Server.add ~ns "move" ~usage:"move <rid> <pos>" 120 ~descr:"Move request <rid> in the secondary queue." 117 | Rqueue.Not_found -> "No such request in my queue") ; 118 Server.add ~ns "move" ~usage:"move <rid> <pos>" 119 ~descr:"Move request <rid> in the secondary queue." 121 120 (fun a -> 122 121 if Str.string_match move_re a 0 then -
trunk/liquidsoap/src/sources/req_queue.ml
r6622 r6667 37 37 length default_duration timeout conservative = 38 38 object (self) 39 inherit Request_source.queued ~length ~default_duration 39 inherit Request_source.queued ~length ~default_duration 40 40 ~timeout ~conservative () as queued 41 41 … … 46 46 Mutex.lock reqlock ; 47 47 let out = Queue.take requests in 48 ignore49 (Queue.fold (fun pos req ->50 let large,low = split pos in51 Request.set_root_metadata req "2nd_queue_pos"52 (string_of_int pos) ;53 if large <= 5 && low = 0 then54 Request.add_log req55 (Printf.sprintf "#%d in secondary queue" pos) ;56 (pos+1) ) 1 requests) ;57 Mutex.unlock reqlock ;58 if Request.get_root_metadata out "skip" = Some "true" then59 ( Request.add_log out "Out of the secondary queue, but skipped." ;60 Request.destroy out ;61 self#get_next_request )62 else63 ( Request.add_log out "Entering the primary queue." ;48 ignore 49 (Queue.fold (fun pos req -> 50 let large,low = split pos in 51 Request.set_root_metadata req "2nd_queue_pos" 52 (string_of_int pos) ; 53 if large <= 5 && low = 0 then 54 Request.add_log req 55 (Printf.sprintf "#%d in secondary queue" pos) ; 56 (pos+1) ) 1 requests) ; 57 Mutex.unlock reqlock ; 58 if Request.get_root_metadata out "skip" = Some "true" then 59 ( Request.add_log out "Out of the secondary queue, but skipped." ; 60 Request.destroy out ; 61 self#get_next_request ) 62 else 63 ( Request.add_log out "Entering the primary queue." ; 64 64 Request.set_root_metadata out "2nd_queue_pos" "0" ; 65 Request.set_root_metadata out "queue" "primary" ;66 Some out )65 Request.set_root_metadata out "queue" "primary" ; 66 Some out ) 67 67 with 68 68 | Queue.Empty -> Mutex.unlock reqlock ; None … … 101 101 self#set_id (Server.to_string ns) ; 102 102 Server.add ~ns "push" ~usage:"push <uri>" 103 ~descr:"Push a new request in the queue." 103 104 (fun req -> 104 105 match self#create_request req with … … 109 110 self#push_request req ; 110 111 (string_of_int id) 111 | None -> "Unable to create a request!" ) 112 ~descr:"Push a new request in the queue." ; 112 | None -> "Unable to create a request!") ; 113 113 let print_queue q = 114 114 String.concat " " … … 118 118 in 119 119 Server.add ~ns "queue" 120 (fun _ -> print_queue self#copy_queue)121 ~descr:"Display current queue content for both primary and \122 secondary queue.";120 ~descr:"Display current queue content for both primary and \ 121 secondary queue." 122 (fun _ -> print_queue self#copy_queue) ; 123 123 Server.add ~ns "primary_queue" 124 (fun _ -> print_queue queued#copy_queue) 125 ~descr:"Display current queue content for the primary \ 126 queue." ; 124 ~descr:"Display current queue content for the primary queue." 125 (fun _ -> print_queue queued#copy_queue) ; 127 126 Server.add ~ns "secondary_queue" 128 (fun _ -> print_queue (self#copy_queue_init [])) 129 ~descr:"Display current queue content for the seconary \ 130 queue." ; 127 ~descr:"Display current queue content for the seconary queue." 128 (fun _ -> print_queue (self#copy_queue_init [])) ; 131 129 132 130 Server.add ~ns "ignore" ~usage:"ignore <rid>"
