Michael Neumann wrote:
> Hi,
> 
> With DragonFlyBSD (www.dragonflybsd.org) it's now possible to checkpoint 
> processes. That means, that you can store a dump of the running 
> application to disk, from which you can resume later on (possibly on 
> another machine). I mention this, because it's especially interesting 
> for Web frameworks like Wee or Borges, which use Continuations and 
> Threads, that are not marshallable (but checkpointable ;-).
> 
> I've made a Ruby module around the sys_checkpoint syscall. You can find 
> the module here:
> 
>   http://www.ntecs.de/viewcvs/viewcvs/DragonFly/checkpoint/
> 
> Of course, you have to restore sockets, pipes etc. on resume yourself.

Maybe I'll give a simple example:

   require 'checkpoint'
   Checkpoint.checkpoint('dump')
   p '.'
   Checkpoint.resume('dump')

This will loop infinite and print '.' on the screen.
Or this one:

   $conn = TCPServer....

   Checkpoint.checkpoint('dump') do
      # setup sockets on resume
      $conn = TCPServer.open('localhost', 9999)
   end

   ....

If you resume from "dump" (type 'checkpt -r dump' on command line, or 
'ruby -r checkpoint -e 'Checkpoint.resume("dump")'), the block will be 
executed.

Regards,

   Michael