loging format moved into parameters, random targetid for resources

git-svn-id: http://voip.null.ro/svn/yate@2374 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
maciej 2008-11-27 15:59:09 +00:00
parent bf7b95888d
commit 0cd3379746
3 changed files with 48 additions and 34 deletions

View File

@ -164,8 +164,8 @@ class Dispatcher:
if handler == None:
if logger_messages.isEnabledFor(logging.DEBUG):
logger.debug(
"No handler registered in Yate for %s: %s" % \
(_MSG_TYPE_DSCS[hdlr_type], name))
"No handler registered in Yate for %s: %s",\
_MSG_TYPE_DSCS[hdlr_type], name)
if hdlr_type == _HANDLER_TYPE_MSG:
d = self.installMsgHandler(name)
else:
@ -236,7 +236,7 @@ class Dispatcher:
Cancel YAYPM deferred.
"""
if logger.isEnabledFor(logging.DEBUG):
logger.debug("Canceling: %s" % name)
logger.debug("Canceling: %s", name)
self._removeHandler(name, hdlr_type, d)
try:
raise AbandonedException(m)
@ -357,7 +357,7 @@ class EmbeddedDispatcher(Dispatcher):
@_checkIfIsAlive
def ret(self, handled=True, retValue=None):
if logger.isEnabledFor(logging.DEBUG):
logger.debug("Retuning(%s): %s" % (str(handled), str(self)))
logger.debug("Retuning(%s): %s", str(handled), str(self))
if not self._result or not self._event:
raise RuntimeError("Can't return own message!")
@ -374,7 +374,7 @@ class EmbeddedDispatcher(Dispatcher):
@_checkIfIsAlive
def dispatch(self):
if logger.isEnabledFor(logging.DEBUG):
logger.debug("Dispatching: %s" % str(self))
logger.debug("Dispatching: %s", str(self))
if self._result or self._event:
raise RuntimeError("Can't dispatch incomming message!")
d = defer.Deferred()
@ -385,7 +385,7 @@ class EmbeddedDispatcher(Dispatcher):
def enqueue(self):
if not self._gone:
if logger.isEnabledFor(logging.DEBUG):
logger.debug("Enqueing: %s" % str(self))
logger.debug("Enqueing: %s", str(self))
self._gone = True
yateproxy.message_enqueue(self._yatemsg)
else:
@ -522,7 +522,7 @@ class EmbeddedDispatcher(Dispatcher):
def _timeoutHandler(self, m):
if not m._event.isSet():
logger.warn("Message %s not returned in %d sec!" % (m, self._timeout))
logger.warn("Message %s not returned in %d sec!", m, self._timeout)
def _enqueEmbeddedMessage(self, yateMessage):
"""
@ -700,7 +700,7 @@ class TCPDispatcher(Dispatcher, LineReceiver):
def _cancelResponse(self, d, m):
if logger.isEnabledFor(logging.DEBUG):
logger.debug("Canceling: %s" % self);
logger.debug("Canceling: %s", self);
del self.waiting[self._mid]
try:
raise AbandonedException("Abandoned by: %s" % m)
@ -791,7 +791,7 @@ class TCPDispatcher(Dispatcher, LineReceiver):
d.callback(values[1] == "true")
else:
if logger.isEnabledFor(logging.WARN):
logger.warn("Response to unknown message: %s" % str(values))
logger.warn("Response to unknown message: %s", str(values))
def _watchOrResponseReceived(self, values):
values = values.split(':', 4)
@ -815,12 +815,12 @@ class TCPDispatcher(Dispatcher, LineReceiver):
self.handlers[key] = self.handlers.get(key, {})
d.callback(True)
else:
logger.warn("Can't install handler for: %s" % str(values[0]))
logger.warn("Can't install handler for: %s", str(values[0]))
d.errback(failure.Failure(
Exception("Can't install handler for: %s" % str(values[0]))))
Exception("Can't install handler for: %s", str(values[0]))))
else:
if logger.isEnabledFor(logging.WARN):
logger.warn("Response to unknown message: %s" % str(values))
logger.warn("Response to unknown message: %s", str(values))
def _installResponse(self, values):
@ -838,12 +838,12 @@ class TCPDispatcher(Dispatcher, LineReceiver):
self.handlers[key] = self.handlers.get(key, {})
d.callback(True)
else:
logger.warn("Can't install handler for: %s" % str(values[1]))
logger.warn("Can't install handler for: %s", str(values[1]))
d.errback(failure.Failure(
"Can't install handler for: %s" % str(values[1])))
else:
if logger.isEnabledFor(logging.WARN):
logger.warn("Response to unknown message: %s" % str(values))
logger.warn("Response to unknown message: %s", str(values))
def _setlocalResponse(self, values):
"""
@ -855,10 +855,10 @@ class TCPDispatcher(Dispatcher, LineReceiver):
if success:
if logger.isEnabledFor(logging.DEBUG):
logger.debug("Local %s set to: %s" % (name, value))
logger.debug("Local %s set to: %s", name, value)
else:
if logger.isEnabledFor(logging.WARN):
logger.warn("Local %s not set to: %s" % (name, value))
logger.warn("Local %s not set to: %s", name, value)
def __init__(self, connected, args = [], kwargs = {},
reenter = True, selfwatch = True):
@ -892,7 +892,7 @@ class TCPDispatcher(Dispatcher, LineReceiver):
self.connectedFunction(self, *self.args, **self.kwargs)
def connectionLost(self, reason):
logger.info("Connection lost: %s" % reason.getErrorMessage());
logger.info("Connection lost: %s", reason.getErrorMessage());
for (m, (_, d)) in self.waiting.items():
try:
raise DisconnectedException()
@ -906,7 +906,7 @@ class TCPDispatcher(Dispatcher, LineReceiver):
def lineReceived(self, line):
if logger_messages.isEnabledFor(logging.DEBUG):
logger_messages.debug("received line:\n%s" % line);
logger_messages.debug("received line:\n%s", line);
if line == "":
raise Exception("Can't build message from empty string!")
@ -927,7 +927,7 @@ class TCPDispatcher(Dispatcher, LineReceiver):
Install Pymodule message handler.
"""
d = CancellableDeferred(
lambda d, m = None : self._cancelHandler(m, name, hdlr_type, d))
lambda d, m = None : self._cancelHandler(m, name, _HANDLER_TYPE_MSG, d))
logger_messages.debug("installing %s..." % name);
@ -935,7 +935,7 @@ class TCPDispatcher(Dispatcher, LineReceiver):
if self.waiting.has_key(key):
if logger_messages.isEnabledFor(logging.DEBUG):
logger_messages.debug("install of %s already sent..." % name);
logger_messages.debug("install of %s already sent...", name);
_, otherd = self.waiting[key]
d.chainDeferred(otherd)
self.waiting[key] = (None, d)
@ -945,7 +945,7 @@ class TCPDispatcher(Dispatcher, LineReceiver):
line = "%%%%>install:%d:%s\n" % (prio, name)
if logger_messages.isEnabledFor(logging.DEBUG):
logger_messages.debug("sending:\n%s" % str(line[:-1]));
logger_messages.debug("sending:\n%s", str(line[:-1]));
self.transport.write(line)
@ -956,7 +956,7 @@ class TCPDispatcher(Dispatcher, LineReceiver):
Install Pymodule watch handler.
"""
d = CancellableDeferred(
lambda d, m = None : self._cancelHandler(m, name, hdlr_type, d))
lambda d, m = None : self._cancelHandler(m, name, _HANDLER_TYPE_WCH, d))
key = "watch-" + name
@ -970,7 +970,7 @@ class TCPDispatcher(Dispatcher, LineReceiver):
line = "%%%%>watch:%s\n" % name
if logger_messages.isEnabledFor(logging.DEBUG):
logger_messages.debug("sending:\n" + str(line[:-1]));
logger_messages.debug("sending:\n%s", str(line[:-1]));
self.transport.write(line)

View File

@ -28,7 +28,12 @@ from yaypm import CancellableDeferred, TCPDispatcherFactory, AbandonedException
logger = logging.getLogger('yaypm.util')
def sleep(time, until = None):
d = CancellableDeferred()
later = None
def canceller(*args):
if later and later.active:
later.cancel()
d = CancellableDeferred(canceller)
later = reactor.callLater(time, d.callback, None)
if until:

View File

@ -1,6 +1,7 @@
import logging
from yaypm.utils import XOR
from twisted.internet import defer
from random import random
logger = logging.getLogger("yaypm.resources")
@ -9,24 +10,28 @@ class Resource:
raise NotImplementedError("Abstract Method!")
@defer.inlineCallbacks
def play(self, yate, callid, targetid, stopOnDTMF=False, until = None, override = False, *args):
def play(self, yate, callid, targetid,
stopOnDTMF=False, until = None,
override = False, *args):
files = self._match(*args)
nid = targetid
if not until:
until = yate.onwatch("chan.hangup",
lambda m : m["id"] == callid)
for f in files:
nid = f + str(random())
m = yate.msg("chan.masquerade",
{"message": "chan.attach",
"id": targetid,
"override" if override else "source": f,
"notify": nid})
{"message": "chan.attach",
"id": targetid,
"override" if override else "source": f,
"notify": nid})
yield m.dispatch()
if stopOnDTMF:
dtmf, _ = yield XOR(
dtmf, notify = yield XOR(
yate.onmsg("chan.notify",
lambda m : m["targetid"] == nid,
autoreturn = True,
@ -38,12 +43,16 @@ class Resource:
yield dtmf
break
else:
yield yate.onmsg("chan.notify",
notify = yield yate.onwatch("chan.notify",
lambda m : m["targetid"] == nid,
autoreturn = True,
until = until)
def override(self, yate, callid, stopOnDTMF=False, until = None, *args):
if notify["reason"] != "eof":
break
def override(self, yate, callid,
stopOnDTMF=False, until = None, *args):
return Resource.play(self, yate, callid, callid, stopOnDTMF,
until, override = True, *args)