ich sitze hier gerade ein einer API die eine Pythonklasse benachrichtigen soll, wenn sich bestimmte Zustände ändern. Soweit funktioniert auch alles, nur wenn ich in Python eine Instanz erzeuge und mit raw_input oder sleep auf ein Event warte gibt mit das Programm einen Speicherzugriffsfehler aus. Mach ich aber ein Busy-Waiting mit
Code: Alles auswählen
while 1:
pass
Code: Alles auswählen
// eigentlich C++
class PyDCDObserver : public Observer
{
private :
PyObject* self;
public :
PyDCDObserver(PyObject* p_obj) : self(p_obj) {}
void performEvent(Observable* observable);
};
void PyDCDObserver::performEvent(Observable* observable)
{
call_method<void,boost::python::str>(self, "performEvent", str("irgendwas"));
}
Code: Alles auswählen
BOOST_PYTHON_MODULE_INIT(PyDCDEventLayer)
{
class_<PyDCDHandler>("PyDCDHandler")
.def("connectServer", &PyDCDHandler::connectServer)
.def("disconnectServer", &PyDCDHandler::disconnectServer)
.def("addObserver", addobserverById)
.def("delObserver", delobserverById)
;
class_<Observer,boost::noncopyable, boost::shared_ptr<PyDCDObserver> >("PyDCDObserver");
}
Code: Alles auswählen
from PyDCDEventLayer import *
class MyDCD (PyDCDObserver):
def performEvent(self, x):
print x
a = PyDCDHandler()
print "connect %i" % a.connectServer("localhost", 5555)
b = MyDCD()
c = a.getParameterList()
print "parameter : %i" % a.addObserver('monitor.level.1', b)
# Problem !!!
raw_input("drueck enter")
Danke schon mal im vorraus.
gruß,
tyr377