blob: 272990fa31d5b81467915c9e1e91e988e08654d8 [file] [log] [blame]
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
import sys
from cerror import Skipped
from org.apache.qpid.proton.reactor import FlowController, Handshaker
from org.apache.qpid.proton.engine import BaseHandler, HandlerException
# from proton/handlers.h
def pn_flowcontroller(window):
return FlowController(window)
def pn_handshaker():
return Handshaker()
def pn_iohandler():
raise Skipped()
from cengine import pn_event, pn_event_type
class pn_pyhandler(BaseHandler):
def __init__(self, pyobj):
self.pyobj = pyobj
def onUnhandled(self, event):
ev = pn_event(event)
try:
self.pyobj.dispatch(ev, pn_event_type(ev))
except HandlerException:
ex = sys.exc_info();
cause = ex[1].cause
if hasattr(cause, "value"):
cause = cause.value
t = type(cause)
self.pyobj.exception(t, cause, ex[2])
except:
ex = sys.exc_info()
self.pyobj.exception(*ex)