develooper Front page | perl.dbd.oracle.changes | Postings from October 2011

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

From:
byterock
Date:
October 28, 2011 17:16
Subject:
[svn:dbd-oracle] r14975 - dbd-oracle/branches/FAN
Message ID:
20111029001620.4484D184B30@xx12.develooper.com
Author: byterock
Date: Fri Oct 28 17:16:20 2011
New Revision: 14975

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

Log:
back again


Modified: dbd-oracle/branches/FAN/oci8.c
==============================================================================
--- dbd-oracle/branches/FAN/oci8.c	(original)
+++ dbd-oracle/branches/FAN/oci8.c	Fri Oct 28 17:16:20 2011
@@ -1300,95 +1300,116 @@
 }
 
 void 
-event_info (ha_context_t *ha_ctx, HV *ha_event, imp_dbh_t *imp_dbh, OCIEvent *eventhp) {
+event_info ( imp_dbh_t *imp_dbh, OCIEvent *eventhp) {
 
-  ha_context_t *ctx =(ha_context_t*)ha_ctx;
-  dTHXa(ctx->ct_perl);
-  dSP;
+  dTHX;
+  imp_dbh_t  *imp_dbh = (imp_dbh_t*)ctx->imp_dbh;
   sword status;
+  text *event_att;
   OCIDateTime *event_ts;
-  OCIServer *srvhp;
-  ub4 str_len = 200;
-  text  str_buf[200];
-  text source_att;
-  ub4  status_att;
-  ub4  dbdomain_len;
-  text dbdomain_att;
-  ub4  dbname_len;
-  text dbname_att;
-  ub4  hostname_len;
-  text hostname_att;
-  ub4  instance_len;
-  text instance_att;
-  ub4  service_len;
-  text service_att;
+  OraText tsbuff[50];
+  ub4 event_att_len;
+  ub4 event_code;
+  HV* ha_event;
 
-PERL_SET_CONTEXT(ctx->ct_perl);
   PerlIO_printf(DBILOGFP, " event info  \n");
-       OCIAttrGet_log_stat(eventhp,  OCI_HTYPE_EVENT, (dvoid *)&source_att, 0, OCI_ATTR_HA_SOURCE, imp_dbh->errhp, status);
+       OCIAttrGet_log_stat(eventhp,  OCI_HTYPE_EVENT, (dvoid *)&event_code, 0, OCI_ATTR_HA_SOURCE, imp_dbh->errhp, status);
+
+ PerlIO_printf(DBILOGFP, " hacb 1 OCI_ATTR_HA_SOURCE=%d \n",event_code);
 
- PerlIO_printf(DBILOGFP, " hacb 1 OCI_ATTR_HA_SOURCE=%d \n",source_att);
 
-  hv_store(ha_event,"Source",6,sv_2mortal(newSVpv(oci_ha_event_source(source_att),strlen(oci_ha_event_source(source_att)))),0);
+  hv_store(ha_event,"Source",6,sv_2mortal(newSVpv(oci_ha_event_source(event_code),strlen(oci_ha_event_source(event_code)))),0);
 
-  OCIAttrGet_log_stat(eventhp,  OCI_HTYPE_EVENT, (dvoid *)&status_att, 0, OCI_ATTR_HA_STATUS, imp_dbh->errhp, status);
+  OCIAttrGet_log_stat(eventhp,  OCI_HTYPE_EVENT, (dvoid *)&event_code, 0, OCI_ATTR_HA_STATUS, imp_dbh->errhp, status);
 
- PerlIO_printf(DBILOGFP, " hacb 2 OCI_ATTR_HA_STATUS=%d HA down=%d,up=%d  \n",status_att,OCI_HA_STATUS_DOWN,OCI_HA_STATUS_UP);
+ PerlIO_printf(DBILOGFP, " hacb 2 OCI_ATTR_HA_STATUS=%d HA down=%d,up=%d  \n",event_code,OCI_HA_STATUS_DOWN,OCI_HA_STATUS_UP);
 
 
-  if (status_att == OCI_HA_STATUS_UP){
+  if (event_code == OCI_HA_STATUS_UP){
         hv_store(ha_event,"Status",6,sv_2mortal(newSVpv("UP",2)),0);
+
   }
   else {
         hv_store(ha_event,"Status",6,sv_2mortal(newSVpv("DOWN",4)),0);
   }
 
- OCIAttrGet_log_stat(eventhp,  OCI_HTYPE_EVENT, (dvoid *)&dbdomain_att, &dbdomain_len, OCI_ATTR_DBDOMAIN, imp_dbh->errhp, status);
+OCIAttrGet_log_stat(eventhp,  OCI_HTYPE_EVENT, (dvoid *)&event_att, &event_att_len, OCI_ATTR_DBDOMAIN, imp_dbh->errhp, status);
 
- PerlIO_printf(DBILOGFP, " hacb 3 OCI_ATTR_DBDOMAIN=%s \n",dbdomain_att);
+ PerlIO_printf(DBILOGFP, " hacb 3 OCI_ATTR_DBDOMAIN=%s \n",event_att);
 
-   hv_store(ha_event,"Domain",6,sv_2mortal(newSVpv((char*)dbdomain_att,dbdomain_len)),0);
+   hv_store(ha_event,"Domain",6,sv_2mortal(newSVpv((char*)event_att,event_att_len)),0);
 
-  OCIAttrGet_log_stat(eventhp,  OCI_HTYPE_EVENT, (dvoid *)&dbname_att, &dbname_len, OCI_ATTR_DBNAME, imp_dbh->errhp, status);
+  OCIAttrGet_log_stat(eventhp,  OCI_HTYPE_EVENT, (dvoid *)&event_att, &event_att_len, OCI_ATTR_DBNAME, imp_dbh->errhp, status);
 
- PerlIO_printf(DBILOGFP, " hacb 4 OCI_ATTR_DBNAME=%s \n",dbname_att);
+ PerlIO_printf(DBILOGFP, " hacb 4 OCI_ATTR_DBNAME=%s \n",event_att);
 
- hv_store(ha_event,"Name",5,sv_2mortal(newSVpv((char*)dbname_att,dbname_len)),0);
 
+  hv_store(ha_event,"Name",5,sv_2mortal(newSVpv((char*)event_att,event_att_len)),0);
 
-  OCIAttrGet_log_stat(eventhp,  OCI_HTYPE_EVENT, (dvoid *)&hostname_att, &hostname_len, OCI_ATTR_HOSTNAME, imp_dbh->errhp, status);
 
- PerlIO_printf(DBILOGFP, " hacb 5 OCI_ATTR_HOSTNAME=%s \n",hostname_att);
+  OCIAttrGet_log_stat(eventhp,  OCI_HTYPE_EVENT, (dvoid *)&event_att, &event_att_len, OCI_ATTR_HOSTNAME, imp_dbh->errhp, status);
 
+ PerlIO_printf(DBILOGFP, " hacb 5 OCI_ATTR_HOSTNAME=%s \n",event_att);
 
-  hv_store(ha_event,"Host",4,sv_2mortal(newSVpv((char*)hostname_att,hostname_len)),0);
 
-  OCIAttrGet_log_stat(eventhp,  OCI_HTYPE_EVENT, (dvoid *)&instance_att, &instance_len, OCI_ATTR_INSTNAME, imp_dbh->errhp, status);
+  hv_store(ha_event,"Host",4,sv_2mortal(newSVpv((char*)event_att,event_att_len)),0);
 
- PerlIO_printf(DBILOGFP, " hacb 6 OCI_ATTR_INSTNAME=%s \n",instance_att);
+  OCIAttrGet_log_stat(eventhp,  OCI_HTYPE_EVENT, (dvoid *)&event_att, &event_att_len, OCI_ATTR_INSTNAME, imp_dbh->errhp, status);
 
+ PerlIO_printf(DBILOGFP, " hacb 6 OCI_ATTR_INSTNAME=%s \n",event_att);
 
-  hv_store(ha_event,"Instance",8,sv_2mortal(newSVpv((char*)instance_att,instance_len)),0);
 
+  hv_store(ha_event,"Instance",8,sv_2mortal(newSVpv((char*)event_att,event_att_len)),0);
 
-  OCIAttrGet_log_stat(eventhp,  OCI_HTYPE_EVENT, (dvoid *)&service_att, &service_len, OCI_ATTR_SERVICENAME, imp_dbh->errhp, status);
 
- PerlIO_printf(DBILOGFP, " hacb 7 OCI_ATTR_SERVICENAME=%s \n",service_att);
+  OCIAttrGet_log_stat(eventhp,  OCI_HTYPE_EVENT, (dvoid *)&event_att, &event_att_len, OCI_ATTR_SERVICENAME, imp_dbh->errhp, status);
 
+ PerlIO_printf(DBILOGFP, " hacb 7 OCI_ATTR_SERVICENAME=%s \n",event_att);
 
 
- hv_store(ha_event,"Service",7,sv_2mortal(newSVpv((char*)service_att,service_len)),0);
+  hv_store(ha_event,"Service",7,sv_2mortal(newSVpv((char*)event_att,event_att_len)),0);
 
 
 
   OCIAttrGet_log_stat(eventhp,  OCI_HTYPE_EVENT, (dvoid *)&event_ts,0, OCI_ATTR_HA_TIMESTAMP, imp_dbh->errhp, status);
 
-  OCIDateTimeToText_log_stat(imp_dbh->envhp,imp_dbh->errhp,event_ts,&str_len,str_buf,status);
+OCIDateTimeToText(imp_dbh->envhp,imp_dbh->errhp, event_ts, (char*) "MM-DD-YY HH24:MI:SS.FF3",
+                    strlen("MM-DD-YY HH24:MI:SS.FF3"),
+                    (ub1)4, (OraText *)0, 0,&event_att_len, tsbuff);
+
+  hv_store(ha_event,"Timestamp",9,sv_2mortal(newSVpv((char*)tsbuff,event_att_len)),0);
 
+ PerlIO_printf(DBILOGFP, " hacb 8 OCI_HA_TIMESTAMP=%s \n",tsbuff);
+ OCIAttrGet_log_stat(eventhp,  OCI_HTYPE_EVENT, (dvoid *)&srvhp,0, OCI_ATTR_HA_SRVFIRST, imp_dbh->errhp, status);
 
-hv_store(ha_event,"Timestamp",9,sv_2mortal(newSVpv((char*)str_buf,str_len)),0);
 
- PerlIO_printf(DBILOGFP, " hacb 8 OCI_HA_TIMESTAMP=%s \n",str_buf);
+  PerlIO_printf(DBILOGFP, " hacb 9 OCI_ATTR_HA_SRVFIRST =%d nodata=%d \n",status,OCI_NO_DATA);
+
+  OCIAttrGet_log_stat(srvhp,  OCI_HTYPE_SERVER, (dvoid *)&event_att,&event_att_len, OCI_ATTR_INSTNAME, imp_dbh->errhp, status);
+
+
+  PerlIO_printf(DBILOGFP, " hacb 9 server instance from new srvph name=%s \n",event_att);
+
+
+
+/* OCIAttrGet_log_stat(srvhp,  OCI_HTYPE_SERVER, (dvoid *)&event_code,0, OCI_ATTR_SERVER_STATUS, imp_dbh->errhp, status);
+
+
+  PerlIO_printf(DBILOGFP, " hacb 4 HA server STAUTSp=%d ,%d, %d\n",event_code,OCI_SERVER_NORMAL ,OCI_SERVER_NOT_CONNECTED );
+
+  OCIAttrGet_log_stat(imp_dbh->srvhp,  OCI_HTYPE_SERVER, (dvoid *)&event_code,0, OCI_ATTR_SERVER_STATUS, imp_dbh->errhp, status);
+
+
+  PerlIO_printf(DBILOGFP, " hacb 5  currecnt connection server STAUTSp=%d ,%d, %d\n",event_code,OCI_SERVER_NORMAL ,OCI_SERVER_NOT_CONNECTED );
+
+*/
+
+
+
+
+  OCIAttrGet_log_stat(eventhp,  OCI_HTYPE_EVENT, (dvoid *)&srvhp,0, OCI_ATTR_HA_SRVNEXT, imp_dbh->errhp, status);
+
+ PerlIO_printf(DBILOGFP, " hacb 10 event_att=%s HA next  \n",oci_status_name(status));
 
 
  
@@ -1403,55 +1424,97 @@
   dTHXa(ctx->ct_perl);
   dSP;
   imp_dbh_t  *imp_dbh = (imp_dbh_t*)ctx->imp_dbh;
-  sword status = OCI_SUCCESS;
+  sword status;
   text *event_att;
   OCIDateTime *event_ts;
   OraText tsbuff[50];
   ub4 event_att_len;
   ub4 event_code;
   HV* ha_event;
-  AV* servers;
 
   PERL_SET_CONTEXT(ctx->ct_perl);
-  ha_event = newHV();
-  servers  = newAV();
-
-  event_info(ha_ctx,ha_event,imp_dbh,eventhp);
-
-
-  OCIAttrGet_log_stat(eventhp,  OCI_HTYPE_EVENT, (dvoid *)&srvhp,0, OCI_ATTR_HA_SRVFIRST, imp_dbh->errhp, status);
-
-  OCIAttrGet_log_stat(srvhp,  OCI_HTYPE_SERVER, (dvoid *)&event_att,&event_att_len, OCI_ATTR_INSTNAME, imp_dbh->errhp, status);
-
-
-  av_push(servers, newSVpv( (char *) event_att,0));
-
-
-  PerlIO_printf(DBILOGFP, " hacb 9 server instance from new srvph name=%s \n",event_att);
-
+  ha_event  = newHV();
+  PUSHMARK(SP);
+ // XPUSHs(sv_2mortal(newHV(ha_event)));
+  event_info(imp_dbh,eventhp);
 
 
-  while(status){
+ 
+/*
+  status = 
+  while(!status){
 
      OCIAttrGet_log_stat(eventhp,  OCI_HTYPE_EVENT, (dvoid *)&srvhp,0, OCI_ATTR_HA_SRVNEXT, imp_dbh->errhp, status);
      if (status == OCI_NO_DATA) {
           break;
      }
      else {
-      PerlIO_printf(DBILOGFP, " hacb 10 found another server handle.\n");
-     
+      PerlIO_printf(DBILOGFP, " hacb 7 found another server handle.\n");
+      get associated instance name, 
       OCIAttrGet_log_stat(srvhp,  OCI_HTYPE_SERVER, (dvoid *)&event_att,&event_att_len, OCI_ATTR_INSTNAME, imp_dbh->errhp, status);
-      av_push(servers, newSVpv( (char *) event_att,0));
 
+      if (status == OCI_NO_DATA){
+          break;
+      }
+      else {
+        printf("instance name is %s.\n", instname);
+      }
     }
   }
 
-  hv_store(ha_event,"Instances",9,newRV_noinc((SV*)servers),0);
-  PUSHMARK(SP);
   XPUSHs(sv_2mortal(newRV((SV*)ha_event)));
   PUTBACK;
   call_pv(ctx->function, G_DISCARD);
 
+/*
+ checkerr(errhp, OCIAttrGet(eventhp, OCI_HTYPE_EVENT, (dvoid *)&evtsource,
+			     (ub4 *)0,
+			     OCI_ATTR_HA_SOURCE, errhp));
+  */
+  /*checkerr(errhp, OCIAttrGet(eventhp, OCI_HTYPE_EVENT, (dvoid *)&evtstatus,
+			     (ub4 *)0,
+			     OCI_ATTR_HA_STATUS, errhp));
+**/
+//printf ("well this far evtsource=%d\n\n\n",evtsource);        
+
+ //sleep(10);
+
+
+
+/*	if (retcode = OCIAttrGet(eventhp, OCI_HTYPE_EVENT, (dvoid *)&srvhp,	(ub4 *)0,	OCI_ATTR_HA_SRVFIRST, errhp)) {
+		printf(DBILOGFP,"error is %d.\n", retcode);
+	}
+	else{
+		PerlIO_printf(DBILOGFP,"found first server handle.\n");
+		/*get associated instance name, */
+/*		if (retcode = OCIAttrGet(srvhp, OCI_HTYPE_SERVER, (dvoid *)&instname,(ub4 *)&sizep,	OCI_ATTR_INSTNAME, errhp)){
+			PerlIO_printf(DBILOGFP,"error is %d.\n", retcode);
+		}
+		else{
+			PerlIO_printf(DBILOGFP,"instance name is %s.\n", instname);
+		}
+
+	}
+
+	while(!retcode){
+		if (retcode = OCIAttrGet(eventhp, OCI_HTYPE_EVENT, (dvoid *)&srvhp,	(ub4 *)0,OCI_ATTR_HA_SRVNEXT, errhp)) {
+			PerlIO_printf(DBILOGFP,"error is %d.\n", retcode);
+		}
+		else{
+			PerlIO_printf(DBILOGFP,"found another server handle.\n");
+			/*get associated instance name, */
+
+/*			if (retcode = OCIAttrGet(srvhp, OCI_HTYPE_SERVER, (dvoid *)&instname,(ub4 *)&sizep,	OCI_ATTR_INSTNAME, errhp)){
+				PerlIO_printf(DBILOGFP,"error is %d.\n", retcode);
+			}
+			else {
+				PerlIO_printf(DBILOGFP,"instance name is %s.\n", instname);
+			}
+		}
+	}
+	OCIHandleFree((dvoid *)errhp, OCI_HTYPE_ERROR);
+*/
+	
 }
 
 
@@ -1468,12 +1531,78 @@
         ctx->imp_dbh   = imp_dbh;
         strcpy((char *)ctx->function,imp_dbh->ha_function);
 
+ /*       OCIFocbkStruct  ha_failover;
+        sword                   status;
+        ha_callback_t  *cb = NULL;
+allocate space for the callback 
+        Newz(1, cb, 1, ha_callback_t);
+ PerlIO_printf(DBILOGFP, " In reg_ha_callback  1 \n");
+
+        cb->function= (char*)safemalloc(strlen(imp_dbh->ha_function));
+ PerlIO_printf(DBILOGFP, " In reg_ha_callback 2 \n");
+
+        strcpy((char *)cb->function,imp_dbh->ha_function);
+*/
+
+
+
+/* set the context up as a pointer to the taf callback struct*/
+/*       static char *myctx = (char *) "some context"; */
+
+  		PerlIO_printf(DBILOGFP, " In reg_ha_callback imp_dbh=%p\n",imp_dbh);
+     printf( " In reg_ha_callback as tring imp_dbh->ha_function=%s\n",imp_dbh->ha_function);
+ printf( " In reg_ha_callback as pointer imp_dbh->ha_function=%p\n",imp_dbh->ha_function);
+
+
+ /*       OCIAttrSet_log_stat(imp_dbh->srvhp, OCI_HTYPE_SERVER,(dvoid *)&ha_failover ,0,OCI_ATTR_FOCBK, imp_dbh->errhp, status);*/
+
+/*  PerlIO_printf(DBILOGFP, " In reg_ha_callback reg OCI_ATTR_FOCBK status=%d\n",status);
+
+         if (status != OCI_SUCCESS){
+                oci_error(imp_dbh, imp_dbh->errhp, status, "OCIAttrSet Failed to set register OCI_ATTR_FOCBK, HA callback");
+                return 0;
+        }
+   */    
  PerlIO_printf(DBILOGFP, " In reg_ha_callback reg OCI_ATTR_FOCBK =%d, OCI_ATTR_EVTCTX=%d\n",OCI_ATTR_EVTCBK,OCI_ATTR_EVTCTX);
 
          OCIAttrSet_log_stat(imp_dbh->envhp, (ub4) OCI_HTYPE_ENV,(dvoid *)hacb_fn ,(ub4)0,(ub4)OCI_ATTR_EVTCBK, imp_dbh->errhp, status);
 
+ PerlIO_printf(DBILOGFP, " In reg_ha_callback reg OCI_ATTR_EVTCBK status=%d\n",status);
+/*
+         if (status != OCI_SUCCESS){
+                oci_error(imp_dbh, imp_dbh->errhp, status, "OCIAttrSet Failed to set register OCI_ATTR_EVTCTX, HA callback");
+
+                return 0;
+        }
+*/
         OCIAttrSet_log_stat(imp_dbh->envhp, OCI_HTYPE_ENV,ctx,0,OCI_ATTR_EVTCTX, imp_dbh->errhp , status);
 PerlIO_printf(DBILOGFP, " In reg_ha_callback reg OCI_ATTR_EVTCX status=%d\n",status);
+/*
+         if (status != OCI_SUCCES
+                oci_error(imp_dbh, imp_dbh->errhp, status, "OCIAttrSet Failed to set register OCI_ATTR_EVTCTX, HA callback");
+                return 0;
+        }
+*/
+
+
+/*    OCIAttrSet_log_stat(imp_dbh->envhp, (ub4) OCI_HTYPE_ENV,
+								(dvoid *) &ha_cbk, (ub4) 0,
+								(ub4) OCI_ATTR_EVTCBK, imp_dbh->errhp, status);
+
+	if (status != OCI_SUCCESS){
+		oci_error(dbh, imp_dbh->errhp, status, "OCIAttrSet Failed to set register OCI_ATTR_EVTCBK, HA callback");
+		return 0;
+	}
+
+
+   OCIAttrSet_log_stat(imp_dbh->envhp, (ub4) OCI_HTYPE_ENV,
+								(dvoid *)imp_dbh->srvhp, (ub4) 0,
+								(ub4) OCI_ATTR_EVTCTX, imp_dbh->errhp, status);
+  if (status != OCI_SUCCESS){
+		oci_error(dbh, imp_dbh->errhp, status, "OCIAttrSet Failed to set register OCI_ATTR_EVTCTX, HA callback context");
+		return 0;
+	}
+*/
 
 	return status;
 }



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