'Called when a monitored processes exits. If
L{service.IService.running} is L{True} (ie the service is started), the
process will be restarted.
If the process had been running for more than
L{ProcessMonitor.threshold} seconds it will be restarted immediately.
If the process had been running for less than
L{ProcessMonitor.threshold} seconds, the restart will be delayed and
each time the process dies before the configured threshold, the restart
delay will be doubled - up to a maximum delay of maxRestartDelay sec.
@type name: C{str}
@param name: A string that uniquely identifies the process
which exited.'

def connectionLost(self, name):

    if (name in self.murder):
        if self.murder[name].active():
            self.murder[name].cancel()
        del self.murder[name]
    del self.protocols[name]
    if ((self._reactor.seconds() - self.timeStarted[name]) < self.threshold):
        nextDelay = self.delay[name]
        self.delay[name] = min((self.delay[name] * 2), self.maxRestartDelay)
    else:
        nextDelay = 0
        self.delay[name] = self.minRestartDelay
    if (self.running and (name in self.processes)):
        self.restart[name] = self._reactor.callLater(nextDelay, self.startProcess, name)
