コード例 #1
0
ファイル: api.py プロジェクト: osiloke/Flumotion-Transcoder
def _adaptDictValue(d, k, v):
    if admifaces.IAdminInterface.providedBy(k):
        raise ValueError("IAdminInterface is not supported for dictonary keys")
    a = adapt(v)
    if defer.isDeferred(a):
        return a.addCallback(_addDictValue, d, k)
    d[k] = a
    return d
コード例 #2
0
 def process(self):
     try:
         result = self._doProcessing()
         if defer.isDeferred(result):
             result.addCallbacks(defer.dropResult, self._targetFailed, callbackArgs=(self._targetDone,))
             return result
         else:
             self._targetDone()
             return defer.succeed(self)
     except:
         f = Failure()
         self._targetFailed(f)
         return defer.fail(f)
コード例 #3
0
ファイル: api.py プロジェクト: osiloke/Flumotion-Transcoder
def adapt(value):
    if value is None:
        return None
    if isinstance(value, (list, tuple)):
        d = defer.succeed(list())
        for v in value:
            d.addCallback(_adaptListValue, v)
        return d
    if isinstance(value, dict):
        d = defer.succeed(dict())
        for k, v in value.items():
            d.addCallback(_adaptDictValue, k, v)
        return d
    if defer.isDeferred(value):
        return value.addCallback(adapt)
    if admifaces.IAdminInterface.providedBy(value):
        return mediums.IServerMedium(value)
    return value
コード例 #4
0
ファイル: api.py プロジェクト: osiloke/Flumotion-Transcoder
def _adaptListValue(l, v):
    a = adapt(v)
    if defer.isDeferred(a):
        return a.addCallback(_appendListValue, l)
    l.append(a)
    return l