Hi Federico,I have been able to test _raw_pgconn using SWIG, as documented here 
https://sourceforge.net/p/swig/mailman/message/27919299/ , the trick to use 
PyCapsule and SWIG together is to specifically map the type with a directive 
like this one:
%typemap(in) PGconn * {
  $1 = (PGconn *) PyCapsule_GetPointer($input, 
"psycopg2.connection._raw_pgconn");
}

This is interesting because PyCapsule is for sure a "clean" way to pass the 
pointer from Psycopg to XTA.

A couple of questions to understand how to implement it as a re-usable 
deliverable.
In current branch, _raw_pgconn is a property, it's not a method, I have to 
retrieve it as below:
pgconn = rm1._raw_pgconn
xar1 = PostgresqlXaResource(pgconn, "PostgreSQL", "dbname=testdb")

what do you think about a "getter method":
pgconn = rm1._raw_pgconn()
the name of the method does not really matter to me.
_raw_pgconn() create a Capsule object that should be destroyed.What do you 
think about a factory to create and destroy a PyCapsule that contains the 
PGconn pointer?
Kind RegardsCh.F.

-------------------------------------------------------------
Good design can't stop bad implementation
 

    Il giovedì 27 settembre 2018, 22:11:35 CEST, Federico Di Gregorio 
<f...@dndg.it> ha scritto:  
 
 On 09/27/2018 09:57 PM, Christian Ferrari wrote:
> Thanks, for the fix, now the function works, but unfortunately it's a 
> dead end in the SWIG realm...Here's the statement: 
> http://www.swig.org/Doc2.0/SWIGDocumentation.html#Python_nn18
> [...]
> *However, the inverse operation is not possible, i.e., you can't build a 
> SWIG pointer object from a raw integer value.*
> [...]
> 
> PyCapsule https://docs.python.org/2/c-api/capsule.html, suggested by 
> Federico seems a more viable approach:
> https://bfroehle.com/2011/07/18/python-capsules/
> 
> If Psycopg was able to retrieve a PyCapsule, XTA should be able to use 
> it and the Python interpreter would be a gateway between two C/C++ 
> distinct modules (Psycopg and XTA).
> I'm going to perform some experiments in the XTA wrapper before coming 
> back to this mail thread.

If you want the capsule, just pull from my report:

https://github.com/fogzot/psycopg2/tree/feature-expose-pgconn

and use the feature-expose-pgconn branch.

federico

-- 
Federico Di Gregorio                        federico.digrego...@dndg.it
DNDG srl                                                  http://dndg.it
  Everything will be OK at the end. If it's not OK, it's not the end.
                                                              -- Unknown

  

Reply via email to