From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by yquem.inria.fr (Postfix) with ESMTP id 14F0DBBC1 for ; Fri, 7 Mar 2008 21:29:46 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AiQBAA810UfAXQImh2dsb2JhbACQeAEBAQgKKZss X-IronPort-AV: E=Sophos;i="4.25,464,1199660400"; d="scan'208";a="9116675" Received: from discorde.inria.fr ([192.93.2.38]) by mail1-smtp-roc.national.inria.fr with ESMTP; 07 Mar 2008 21:29:45 +0100 Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by discorde.inria.fr (8.13.6/8.13.6) with ESMTP id m27KTeTV010386 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Fri, 7 Mar 2008 21:29:45 +0100 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAFw00UdYvxGE/2dsb2JhbACsYg X-IronPort-AV: E=Sophos;i="4.25,464,1199660400"; d="scan'208";a="10010263" Received: from www.rastageeks.org (HELO mail.rastageeks.org) ([88.191.17.132]) by mail3-smtp-sop.national.inria.fr with ESMTP; 07 Mar 2008 21:29:43 +0100 Received: from [192.168.0.2] (rob92-9-88-161-115-205.fbx.proxad.net [88.161.115.205]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.rastageeks.org (Postfix) with ESMTP id 7E6919E644; Fri, 7 Mar 2008 21:29:42 +0100 (CET) From: Romain Beauxis To: caml-list@inria.fr Subject: ocaml-duppy: an advanced scheduler for ocaml. Date: Fri, 7 Mar 2008 21:29:32 +0100 User-Agent: KMail/1.9.7 Cc: "Savonet's developpers list" MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200803072129.32662.toots@rastageeks.org> X-Miltered: at discorde with ID 47D1A5B4.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; scheduler:01 ocaml:01 scheduler:01 sockets:01 sourceforge:01 wrote:01 unix:01 usefull:02 usefull:02 module:03 module:03 asynchronous:03 let:03 predicate:05 implement:06 Hi all ! Along with our project (liquidsoap), we (the savonet team) have developped an advanced scheduler that we needed for our software. It is now available as a seperate module, and we hope it could be usefull for some of you. The basics of this scheduler is to implement a wrapper around Unix.select in order to be able to wait for events on a socket and/or a given delay and execute a task when one of the waited events occured. We also wrote an asynchronous interface as well as a simple I/O interface, in order to read and write to sockets, or submit an asychronous task to a scheduler. Several queues can be run against the same scheduler, each one living in a different thread. Also, each task has a priority, which can of your favorite type, and each queue decides if it wants to process a task according to a predicate passed at its initialisation. This scheduler can be very usefull to write simple servers, as well as to develop a multi-thread task processing system. Two simple telnet and http examples are provided in the source. You can find more informations on the module there: http://www.rastageeks.org/duppy.html In particular, the documentation is available there: http://www.rastageeks.org/ocaml-duppy/Duppy.html You can also download the module there: https://sourceforge.net/project/showfiles.php?group_id=89802&package_id=266393 Romain -- The bars could not hold me; Force could not control me now. They try to keep me down, yeah! But Jah put I around. (...) Let me tell you this - I'm a duppy conqueror !