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

Reply via email to