develooper Front page | perl.dbd.oracle.changes | Postings from January 2012

[svn:dbd-oracle] r15080 - dbd-oracle/branches/FAN

From:
byterock
Date:
January 12, 2012 03:34
Subject:
[svn:dbd-oracle] r15080 - dbd-oracle/branches/FAN
Message ID:
20120112113418.9F37F184B9A@xx12.develooper.com
Author: byterock
Date: Thu Jan 12 03:34:17 2012
New Revision: 15080

Modified:
   dbd-oracle/branches/FAN/dbdimp.c
   dbd-oracle/branches/FAN/dbdimp.h
   dbd-oracle/branches/FAN/oci8.c

Log:
just some fixing

Modified: dbd-oracle/branches/FAN/dbdimp.c
==============================================================================
--- dbd-oracle/branches/FAN/dbdimp.c	(original)
+++ dbd-oracle/branches/FAN/dbdimp.c	Thu Jan 12 03:34:17 2012
@@ -19,7 +19,7 @@
 #endif /* __CYGWIN32__ */
 
 #include "Oracle.h"
-
+#include "pthread.h"
 
 
 /* XXX DBI should provide a better version of this */
@@ -945,7 +945,7 @@
                 	PerlIO_printf(DBILOGFP,"Setting up HA Event Callback!");
                 }
 
-                status = reg_ha_callback(dbh,imp_dbh);
+                status = reg_ha_callback(imp_dbh);
 
                 if (status != OCI_SUCCESS) {
                         oci_error(dbh, NULL, status,

Modified: dbd-oracle/branches/FAN/dbdimp.h
==============================================================================
--- dbd-oracle/branches/FAN/dbdimp.h	(original)
+++ dbd-oracle/branches/FAN/dbdimp.h	Thu Jan 12 03:34:17 2012
@@ -408,7 +408,7 @@
 
 ub4 ora_db_version _((SV *dbh, imp_dbh_t *imp_dbh));
 sb4 reg_taf_callback _((imp_dbh_t *imp_dbh));
-sb4 reg_ha_callback _((SV *dbh,imp_dbh_t *imp_dbh));
+sb4 reg_ha_callback _((imp_dbh_t *imp_dbh));
 
 /* These defines avoid name clashes for multiple statically linked DBD's	*/
 

Modified: dbd-oracle/branches/FAN/oci8.c
==============================================================================
--- dbd-oracle/branches/FAN/oci8.c	(original)
+++ dbd-oracle/branches/FAN/oci8.c	Thu Jan 12 03:34:17 2012
@@ -1299,15 +1299,28 @@
 
 }
 
+//pthread_mutex_t         mutex;
+
+//static pthread_mutex_t mutex=PHTREAD_MUTEX_INITIALIZER;
+
 void
 hacb_fn( dvoid *ha_ctx, OCIEvent *eventhp) {
 
- ha_context_t *ctx =(ha_context_t*)ha_ctx;
-   OCIServer *srvhp;
-   dTHXa(ctx->ct_perl);
-   SV* dbh = ctx->dbh;
-   dSP;
+   ha_context_t *ctx =(ha_context_t*)ha_ctx;
    imp_dbh_t  *imp_dbh = (imp_dbh_t*)ctx->imp_dbh;
+   pthread_mutex_t mutex;
+   pthread_mutex_init(&mutex, NULL);   
+   pthread_mutex_lock(&mutex);
+   PERL_SET_CONTEXT(ctx->ct_perl);
+   do_ha_perl(imp_dbh,eventhp,ctx->function);
+   pthread_mutex_destroy(&mutex);
+}
+void
+do_ha_perl(  imp_dbh_t *imp_dbh, OCIEvent *eventhp,char *function) {
+   
+   dTHX;
+   dSP;
+   OCIServer *srvhp;
    sword status;
    text *event_att;
    OCIDateTime *event_ts;
@@ -1315,15 +1328,15 @@
    ub4 event_att_len;
    ub4 event_code;
    HV* ha_event;
-  // HV* dbh_h= SvSTASH(SvRV( ctx->dbh));;
    AV* servers;
-   PERL_SET_CONTEXT(ctx->ct_perl);
    ha_event  = newHV();
    servers  = newAV();
    PUSHMARK(SP);
 
+  PerlIO_printf(DBILOGFP, "DBIc_ACTIVE=%d\n",DBIc_ACTIVE(imp_dbh));
+
    //sv_bless(dbh,dbh_h);
-   if (dbh){ 
+   /*if (dbh){ 
      PerlIO_printf(DBILOGFP, " dhb is object cb_f=%d\n",sv_isobject(SvRV(dbh)));
    }
   //PerlIO_printf(DBILOGFP, " dhb isa DBI::db cb_f=%d\n",sv_derived_from(dbh,"DBI::db"));
@@ -1334,7 +1347,7 @@
 
 
 
-
+*/
 //  PerlIO_printf(DBILOGFP, " dhb isa DBI::db cb_f=%d\n",sv_derived_from(dbh,"DBI::db"));
 
 
@@ -1420,17 +1433,17 @@
    XPUSHs(sv_2mortal(newRV((SV*)DBIc_MY_H(imp_dbh))));
    XPUSHs(sv_2mortal(newRV((SV*)ha_event)));
    PUTBACK;
-   call_pv(ctx->function, G_DISCARD);
+   call_pv(function, G_DISCARD);
+
 }
 
 
 sb4
-reg_ha_callback(SV *dbh, imp_dbh_t *imp_dbh)
-{
+reg_ha_callback( imp_dbh_t *imp_dbh){
         dTHX;
         sword status;
         ha_context_t  *ctx = NULL;
-        SV* dbhref = newRV(dbh);// = sv_setref_iv(dbh, "DBI::db");
+       // SV* dbhref = newRV(dbh);// = sv_setref_iv(dbh, "DBI::db");
 // = newSVrv((SV*) dbh, "DBI::db"); 
 //newRV_noinc((SV*) dbh);
 /*allocate space for the callback */
@@ -1439,10 +1452,8 @@
         ctx->ct_perl   = my_perl;
         ctx->imp_dbh   = imp_dbh;
         //sv_setref_pv(dbhref,"DBI::db", dbh);
-        ctx->dbh       = dbhref; //newSVrv( dbh, "DBI::db");
-PerlIO_printf(DBILOGFP, " dhb isa DBI::db=%d\n",sv_derived_from(dbh,"DBI::db"));
+       // ctx->dbh       = dbhref; //newSVrv( dbh, "DBI::db");
 
-PerlIO_printf(DBILOGFP, " dhb isa DBI::db=%d\n",sv_derived_from(SvRV(dbhref),"DBI::db"));
 
 
 
@@ -1450,13 +1461,9 @@
 //sv_bless(dbhref, gv_stashpv("DBI::db", 0));
         strcpy((char *)ctx->function,imp_dbh->ha_function);
 
-PerlIO_printf(DBILOGFP, " dhb isa DBI::db=%d\n",sv_derived_from(dbh,"DBI::db"));
-
-
-PerlIO_printf(DBILOGFP, " dhb is object=%d\n",sv_isobject(ctx->dbh));
 
-PerlIO_printf(DBILOGFP, " dhb isa DBI::db=%d\n",sv_derived_from(dbh,"DBI::db"));
 
+PerlIO_printf(DBILOGFP, "reg callback DBIc_ACTIVE=%d\n",DBIc_ACTIVE(imp_dbh));
 
  PerlIO_printf(DBILOGFP, " In reg_ha_callback reg OCI_ATTR_FOCBK =%d, OCI_ATTR_EVTCTX=%d\n",OCI_ATTR_EVTCBK,OCI_ATTR_EVTCTX);
 



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About