On 10/02/2018 10:07 PM, Christian Ferrari wrote:
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.
Right now the getter creates a new capsule at every invocation so
transforming it into a method should be straightforward. I'll do it
later today so that you can test.
> What do you think about a factory to create and destroy a PyCapsule that
> contains the PGconn pointer?
Mm. I don't understand what you need here? Can you show an example of usage?
federico
--
Federico Di Gregorio federico.digrego...@dndg.it
DNDG srl http://dndg.it
Credo fermamente che da qualche parte, in una scatola ci sia un gatto
che non è vivo ne morto. Credo anche che se i fisici non si sbrigano
a dargli una scatoletta, ben presto sarà solo morto.
-- adattato da una frase di Sam Black Crow