> On Dec 17, 2015, at 4:56 AM, Chris Norman <chris.norm...@googlemail.com> 
> wrote:
> 
> Hi,
> It's a MUD server, so players type in commands and receive textual responses.
> 
> One of the admin commands is the ability to shutdown the server (or CTRL-C 
> might be pressed on the console). I'd like this action to notify all 
> connected transports that the server is going down for shutdown, so they're 
> not rudely disconnected, then once the notifications have all gone through, 
> then the server is free to shutdown.

Gotcha.  So you don't need to necessarily wait for all the messages to be 
delivered if there are slow clients waiting around; you just want to send 
everyone a farewell message and if they haven't responded within a reasonable 
timeout, go ahead and shut down anyway.

If your MUD server is already a Service 
<https://twistedmatrix.com/documents/15.5.0/api/twisted.application.service.IService.html
 
<https://twistedmatrix.com/documents/15.5.0/api/twisted.application.service.IService.html>>
 being launched by twistd, you just need to add a stopService 
<https://twistedmatrix.com/documents/15.5.0/api/twisted.application.service.IService.html#stopService
 
<https://twistedmatrix.com/documents/15.5.0/api/twisted.application.service.IService.html#stopService>>
 method that returns a Deferred.  When CTRL-C is hit (or anything else causes 
reactor.stop to be called), it will call this stopService method, and won't 
exit until a Deferred fires.

In your case, a simple deferLater 
<https://twistedmatrix.com/documents/15.5.0/api/twisted.internet.task.html#deferLater
 
<https://twistedmatrix.com/documents/15.5.0/api/twisted.internet.task.html#deferLater>>
 will probably do the trick.  You can also speed things up when there are no 
connected clients left by cancelling that Deferred to make it finish firing 
immediately.

Will that work for you?

> I hope all this makes sense.

P.S.: For future reference, on this list the preferred style of reply is 
interleaved https://en.wikipedia.org/wiki/Posting_style#Interleaved_style 
<https://en.wikipedia.org/wiki/Posting_style#Interleaved_style> or 
bottom-posting: https://en.wikipedia.org/wiki/Posting_style#Bottom-posting 
<https://en.wikipedia.org/wiki/Posting_style#Bottom-posting>

-glyph

_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to