[svn:dbd-oracle] r14970 - dbd-oracle/branches/FAN
[email protected] Fri, 28 Oct 2011 14:24:33 -0700 (PDT)
| Newsgroups | perl.dbd.oracle.changes |
|---|---|
| Message-ID | <[email protected]> |
Author: byterock
Date: Fri Oct 28 14:24:32 2011
New Revision: 14970
Modified:
dbd-oracle/branches/FAN/oci8.c
Log:
regular commit
Modified: dbd-oracle/branches/FAN/oci8.c
==============================================================================
--- dbd-oracle/branches/FAN/oci8.c (original)
+++ dbd-oracle/branches/FAN/oci8.c Fri Oct 28 14:24:32 2011
@@ -1300,20 +1300,31 @@
}
void
-event_info ( imp_dbh_t *imp_dbh, OCIEvent *eventhp) {
+event_info ( HV *ha_event, imp_dbh_t *imp_dbh, OCIEvent *eventhp) {
dTHX;
- imp_dbh_t *imp_dbh = (imp_dbh_t*)ctx->imp_dbh;
sword status;
- text *event_att;
OCIDateTime *event_ts;
+ OCIServer *srvhp;
OraText tsbuff[50];
- ub4 event_att_len;
- ub4 event_code;
- HV* ha_event;
+ ub4 source_len;
+ 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;
+ ub4 timestamp_len;
+ text timestamp_att;
PerlIO_printf(DBILOGFP, " event info \n");
- OCIAttrGet_log_stat(eventhp, OCI_HTYPE_EVENT, (dvoid *)&event_code, 0, OCI_ATTR_HA_SOURCE, imp_dbh->errhp, status);
+ OCIAttrGet_log_stat(eventhp, OCI_HTYPE_EVENT, (dvoid *)&source, 0, OCI_ATTR_HA_SOURCE, imp_dbh->errhp, status);
PerlIO_printf(DBILOGFP, " hacb 1 OCI_ATTR_HA_SOURCE=%d \n",event_code);
@@ -1333,18 +1344,18 @@
hv_store(ha_event,"Status",6,sv_2mortal(newSVpv("DOWN",4)),0);
}
-OCIAttrGet_log_stat(eventhp, OCI_HTYPE_EVENT, (dvoid *)&event_att, &event_att_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",event_att);
- hv_store(ha_event,"Domain",6,sv_2mortal(newSVpv((char*)event_att,event_att_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 *)&event_att, &event_att_len, OCI_ATTR_DBNAME, imp_dbh->errhp, status);
PerlIO_printf(DBILOGFP, " hacb 4 OCI_ATTR_DBNAME=%s \n",event_att);
- hv_store(ha_event,"Name",5,sv_2mortal(newSVpv((char*)event_att,event_att_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 *)&event_att, &event_att_len, OCI_ATTR_HOSTNAME, imp_dbh->errhp, status);
@@ -1352,14 +1363,14 @@
PerlIO_printf(DBILOGFP, " hacb 5 OCI_ATTR_HOSTNAME=%s \n",event_att);
- hv_store(ha_event,"Host",4,sv_2mortal(newSVpv((char*)event_att,event_att_len)),0);
+ // hv_store(ha_event,"Host",4,sv_2mortal(newSVpv((char*)event_att,event_att_len)),0);
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*)event_att,event_att_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 *)&event_att, &event_att_len, OCI_ATTR_SERVICENAME, imp_dbh->errhp, status);
@@ -1367,49 +1378,19 @@
PerlIO_printf(DBILOGFP, " hacb 7 OCI_ATTR_SERVICENAME=%s \n",event_att);
- hv_store(ha_event,"Service",7,sv_2mortal(newSVpv((char*)event_att,event_att_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(imp_dbh->envhp,imp_dbh->errhp, event_ts, (char*) "MM-DD-YY HH24:MI:SS.FF3",
- strlen("MM-DD-YY HH24:MI:SS.FF3"),
+OCIDateTimeToText(imp_dbh->envhp,imp_dbh->errhp, event_ts, (char*) "MM-DD-YY HH24:MI:SS.SS",
+ strlen("MM-DD-YY HH24:MI:SS.SS"),
(ub1)4, (OraText *)0, 0,&event_att_len, tsbuff);
- hv_store(ha_event,"Timestamp",9,sv_2mortal(newSVpv((char*)tsbuff,event_att_len)),0);
+ //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);
-
-
- 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));
@@ -1424,97 +1405,55 @@
dTHXa(ctx->ct_perl);
dSP;
imp_dbh_t *imp_dbh = (imp_dbh_t*)ctx->imp_dbh;
- sword status;
+ sword status = OCI_SUCCESS;
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();
- PUSHMARK(SP);
- // XPUSHs(sv_2mortal(newHV(ha_event)));
- event_info(imp_dbh,eventhp);
+ ha_event = newHV();
+ servers = newAV();
+ event_info(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);
-
-/*
- status =
- while(!status){
+
+ av_push(servers, newSVpv( (char *) event_att,0));
+
+
+ PerlIO_printf(DBILOGFP, " hacb 9 server instance from new srvph name=%s \n",event_att);
+
+
+
+ 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 7 found another server handle.\n");
- get associated instance name,
+ PerlIO_printf(DBILOGFP, " hacb 10 found another server handle.\n");
+
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,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);
-*/
-
}
@@ -1531,78 +1470,12 @@
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;
}