mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-01 17:35:17 +00:00
Fix python domain events example & binding
This commit is contained in:
parent
fb828ed21d
commit
7c99cb93c5
@ -1,3 +1,11 @@
|
||||
Thu May 28 12:00:30 BST 2009 Daniel P. Berrange <berrange@redhat.com>
|
||||
|
||||
Fix python domain events example & binding.
|
||||
* examples/domain-events/events-python/event-test.py: Fix
|
||||
broken handling of timers
|
||||
* python/libvir.c: Take reference on virDomainPtr object
|
||||
before wrapping it to avoid double-free.
|
||||
|
||||
Tue May 26 13:09:30 BST 2009 Daniel P. Berrange <berrange@redhat.com>
|
||||
|
||||
Fix error location logging
|
||||
|
@ -6,6 +6,8 @@ import select
|
||||
mypoll = select.poll()
|
||||
TIMEOUT_MS = 1000
|
||||
|
||||
debug = False
|
||||
|
||||
# handle globals
|
||||
h_fd = 0
|
||||
h_events = 0
|
||||
@ -66,8 +68,9 @@ def myPollEventToEventHandleType(events):
|
||||
return ret;
|
||||
|
||||
def myAddHandle(fd, events, cb, opaque):
|
||||
global h_fd, h_events, h_cb, h_opaque
|
||||
#print "Adding Handle %s %s %s %s" % (str(fd), str(events), str(cb), str(opaque))
|
||||
global h_fd, h_events, h_cb, h_opaque, debug
|
||||
if debug:
|
||||
print "Adding Handle %s %s %s %s" % (str(fd), str(events), str(cb), str(opaque))
|
||||
h_fd = fd
|
||||
h_events = events
|
||||
h_cb = cb
|
||||
@ -76,36 +79,48 @@ def myAddHandle(fd, events, cb, opaque):
|
||||
return 0
|
||||
|
||||
def myUpdateHandle(watch, event):
|
||||
global h_fd, h_events
|
||||
#print "Updating Handle %s %s" % (str(h_fd), str(event))
|
||||
global h_fd, h_events, debug
|
||||
if debug:
|
||||
print "Updating Handle %s %s" % (str(h_fd), str(event))
|
||||
h_events = event
|
||||
mypoll.unregister(h_fd)
|
||||
mypoll.register(h_fd, myEventHandleTypeToPollEvent(event))
|
||||
|
||||
def myRemoveHandle(watch):
|
||||
global h_fd
|
||||
#print "Removing Handle %s" % str(h_fd)
|
||||
global h_fd, debug
|
||||
if debug:
|
||||
print "Removing Handle %s" % str(h_fd)
|
||||
mypoll.unregister(h_fd)
|
||||
h_fd = 0
|
||||
return h_opaque
|
||||
|
||||
def myAddTimeout(timeout, cb, opaque):
|
||||
global t_active, t_timeout, t_cb, t_opaque
|
||||
#print "Adding Timeout %s %s %s" % (str(timeout), str(cb), str(opaque))
|
||||
t_active = 1;
|
||||
global t_active, t_timeout, t_cb, t_opaque, debug
|
||||
if debug:
|
||||
print "Adding Timeout %s %s %s" % (str(timeout), str(cb), str(opaque))
|
||||
if timeout == -1:
|
||||
t_active = 0
|
||||
else:
|
||||
t_active = 1
|
||||
t_timeout = timeout;
|
||||
t_cb = cb;
|
||||
t_opaque = opaque;
|
||||
return 0
|
||||
|
||||
def myUpdateTimeout(timer, timeout):
|
||||
global t_timeout
|
||||
#print "Updating Timeout %s %s" % (str(timer), str(timeout))
|
||||
global t_timeout, t_active, debug
|
||||
if debug:
|
||||
print "Updating Timeout %s %s" % (str(timer), str(timeout))
|
||||
if timeout == -1:
|
||||
t_active = 0
|
||||
else:
|
||||
t_active = 1
|
||||
t_timeout = timeout;
|
||||
|
||||
def myRemoveTimeout(timer):
|
||||
global t_active
|
||||
#print "Removing Timeout %s" % str(timer)
|
||||
global t_active, debug
|
||||
if debug:
|
||||
print "Removing Timeout %s" % str(timer)
|
||||
t_active = 0;
|
||||
return t_opaque
|
||||
|
||||
@ -159,6 +174,8 @@ def main():
|
||||
|
||||
while 1:
|
||||
try:
|
||||
if debug:
|
||||
print "Poll sleep %d" % t_active
|
||||
sts = mypoll.poll(TIMEOUT_MS)
|
||||
except select.error, err:
|
||||
if err[0] == errno.EINTR:
|
||||
@ -168,17 +185,19 @@ def main():
|
||||
print "Keyboard Interrupt caught - exiting cleanly"
|
||||
break
|
||||
|
||||
if t_cb and t_active == 1:
|
||||
if debug:
|
||||
print "Invoking Timeout CB"
|
||||
t_cb(t_timeout, t_opaque[0], t_opaque[1])
|
||||
|
||||
if not sts:
|
||||
#print "Timed out"
|
||||
if debug:
|
||||
print "Timed out"
|
||||
continue
|
||||
|
||||
rfd = sts[0][0]
|
||||
revents = sts[0][1]
|
||||
|
||||
if t_active:
|
||||
#print "Invoking Timeout CB"
|
||||
t_cb(t_timeout, t_opaque[0], t_opaque[1])
|
||||
|
||||
if revents & select.POLLHUP:
|
||||
print "Reset by peer";
|
||||
return -1;
|
||||
|
@ -1653,6 +1653,7 @@ libvirt_virConnectDomainEventCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||
LIBVIRT_ENSURE_THREAD_STATE;
|
||||
|
||||
/* Create a python instance of this virDomainPtr */
|
||||
virDomainRef(dom);
|
||||
pyobj_dom = libvirt_virDomainPtrWrap(dom);
|
||||
pyobj_dom_args = PyTuple_New(2);
|
||||
if(PyTuple_SetItem(pyobj_dom_args, 0, pyobj_conn_inst)!=0) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user