09.12.2012 Views

Advanced Queuing - Oracle

Advanced Queuing - Oracle

Advanced Queuing - Oracle

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

* XA open string */<br />

char xaoinfo[] = "oracle_xa+ACC=P/AQ/AQ+SESTM=30+Objects=T";<br />

/* template for generating XA XIDs */<br />

XID xidtempl = { 0x1e0a0a1e, 12, 8, "GTRID001BQual001" };<br />

Deploying AQ with XA<br />

/* Pointer to <strong>Oracle</strong> XA function table */<br />

extern struct xa_switch_t xaosw; /* <strong>Oracle</strong> XA switch */<br />

static struct xa_switch_t *xafunc = &xaosw;<br />

/* dummy stubs for ax_reg and ax_unreg */<br />

int ax_reg(rmid, xid, flags)<br />

int rmid;<br />

XID *xid;<br />

long flags;<br />

{<br />

xid->formatID = -1;<br />

return 0;<br />

}<br />

int ax_unreg(rmid, flags)<br />

int rmid;<br />

long flags;<br />

{<br />

return 0;<br />

}<br />

/* generate an XID */<br />

void xidgen(xid, serialno)<br />

XID *xid;<br />

int serialno;<br />

{<br />

char seq [11];<br />

sprintf(seq, "%d", serialno);<br />

memcpy((void *)xid, (void *)&xidtempl, sizeof(XID));<br />

strncpy((&xid->data[5]), seq, 3);<br />

}<br />

/* check if XA operation succeeded */<br />

#define checkXAerr(action, funcname) \<br />

if ((action) != XA_OK) \<br />

{ \<br />

printf("%s failed!\n", funcname); \<br />

exit(-1); \<br />

<strong>Oracle</strong> <strong>Advanced</strong> <strong>Queuing</strong> by Example A-69

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!