@@ -34,6 +34,7 @@ static PyMemberDef cxoSubscrTypeMembers[] = {
3434 READONLY },
3535 { "namespace" , T_INT , offsetof(cxoSubscr , namespace ), READONLY },
3636 { "protocol" , T_INT , offsetof(cxoSubscr , protocol ), READONLY },
37+ { "ipAddress" , T_OBJECT , offsetof(cxoSubscr , ipAddress ), READONLY },
3738 { "port" , T_INT , offsetof(cxoSubscr , port ), READONLY },
3839 { "timeout" , T_INT , offsetof(cxoSubscr , timeout ), READONLY },
3940 { "operations" , T_INT , offsetof(cxoSubscr , operations ), READONLY },
@@ -517,11 +518,13 @@ static void cxoSubscr_callback(cxoSubscr *subscr,
517518// Allocate a new subscription object.
518519//-----------------------------------------------------------------------------
519520cxoSubscr * cxoSubscr_new (cxoConnection * connection , uint32_t namespace ,
520- uint32_t protocol , uint32_t port , PyObject * callback , uint32_t timeout ,
521- uint32_t operations , uint32_t qos )
521+ uint32_t protocol , PyObject * ipAddress , uint32_t port ,
522+ PyObject * callback , uint32_t timeout , uint32_t operations ,
523+ uint32_t qos )
522524{
523525 dpiSubscrCreateParams params ;
524526 cxoSubscr * subscr ;
527+ cxoBuffer buffer ;
525528
526529 subscr = (cxoSubscr * ) cxoPyTypeSubscr .tp_alloc (& cxoPyTypeSubscr , 0 );
527530 if (!subscr )
@@ -532,17 +535,29 @@ cxoSubscr *cxoSubscr_new(cxoConnection *connection, uint32_t namespace,
532535 subscr -> callback = callback ;
533536 subscr -> namespace = namespace ;
534537 subscr -> protocol = protocol ;
538+ Py_XINCREF (ipAddress );
539+ subscr -> ipAddress = ipAddress ;
535540 subscr -> port = port ;
536541 subscr -> timeout = timeout ;
537542 subscr -> operations = operations ;
538543 subscr -> qos = qos ;
539544
540545 if (dpiContext_initSubscrCreateParams (cxoDpiContext , & params ) < 0 ) {
541546 cxoError_raiseAndReturnNull ();
547+ Py_DECREF (subscr );
542548 return NULL ;
543549 }
544550 params .subscrNamespace = namespace ;
545551 params .protocol = protocol ;
552+ if (ipAddress ) {
553+ if (cxoBuffer_fromObject (& buffer , ipAddress ,
554+ connection -> encodingInfo .encoding ) < 0 ) {
555+ Py_DECREF (subscr );
556+ return NULL ;
557+ }
558+ params .ipAddress = buffer .ptr ;
559+ params .ipAddressLength = buffer .size ;
560+ }
546561 params .portNumber = port ;
547562 if (callback ) {
548563 params .callback = (dpiSubscrCallback ) cxoSubscr_callback ;
0 commit comments