[svn:dbd-oracle] r14979 - dbd-oracle/branches/FAN
[email protected] Fri, 28 Oct 2011 17:48:22 -0700 (PDT)
| Newsgroups | perl.dbd.oracle.changes |
|---|---|
| Message-ID | <[email protected]> |
Author: byterock
Date: Fri Oct 28 17:48:22 2011
New Revision: 14979
Modified:
dbd-oracle/branches/FAN/oci8.c
Log:
a quick fix
Modified: dbd-oracle/branches/FAN/oci8.c
==============================================================================
--- dbd-oracle/branches/FAN/oci8.c (original)
+++ dbd-oracle/branches/FAN/oci8.c Fri Oct 28 17:48:22 2011
@@ -1302,144 +1302,116 @@
void
hacb_fn( dvoid *ha_ctx, OCIEvent *eventhp) {
- ha_context_t *ctx =(ha_context_t*)ha_ctx;
- dTHXa(ctx->ct_perl);
- dSP;
- imp_dbh_t *imp_dbh = (imp_dbh_t*)ctx->imp_dbh;
- sword status = OCI_SUCCESS;
+ ha_context_t *ctx =(ha_context_t*)ha_ctx;
+ OCIServer *srvhp;
+ dTHXa(ctx->ct_perl);
+ dSP;
+ imp_dbh_t *imp_dbh = (imp_dbh_t*)ctx->imp_dbh;
+ sword status;
+ text *event_att;
+ OCIDateTime *event_ts;
+ OraText tsbuff[50];
+ ub4 event_att_len;
+ ub4 event_code;
+ HV* ha_event;
- 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;
- ub4 event_att_len;
- text event_att;
- HV* ha_event;
- AV* servers;
+ PERL_SET_CONTEXT(ctx->ct_perl);
+ ha_event = newHV();
+ PUSHMARK(SP);
- PERL_SET_CONTEXT(ctx->ct_perl);
- ha_event = newHV();
- servers = newAV();
+ PerlIO_printf(DBILOGFP, " how about this my functio %s\n",ctx->function);
+ OCIAttrGet_log_stat(eventhp, OCI_HTYPE_EVENT, (dvoid *)&event_code, 0, OCI_ATTR_HA_SOURCE, imp_dbh->errhp, status);
+ 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 *)&event_code, 0, OCI_ATTR_HA_STATUS, imp_dbh->errhp, status);
- PUSHMARK(SP);
+ PerlIO_printf(DBILOGFP, " how about OCI_ATTR_HA_STATUS=%d HA next dwon=%d,up-%d \n",event_code,OCI_HA_STATUS_DOWN,OCI_HA_STATUS_UP);
- 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);
+ if (event_code == OCI_HA_STATUS_UP){
+ hv_store(ha_event,"Status",6,sv_2mortal(newSVpv("UP",2)),0);
- PerlIO_printf(DBILOGFP, " hacb 1 OCI_ATTR_HA_SOURCE=%d \n",source_att);
+ }
+ else {
+ hv_store(ha_event,"Status",6,sv_2mortal(newSVpv("DOWN",4)),0);
+ }
- hv_store(ha_event,"Source",6,sv_2mortal(newSVpv(oci_ha_event_source(source_att),strlen(oci_ha_event_source(source_att)))),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 *)&status_att, 0, OCI_ATTR_HA_STATUS, imp_dbh->errhp, status);
+ hv_store(ha_event,"Domain",6,sv_2mortal(newSVpv((char*)event_att,event_att_len)),0);
- 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);
+ OCIAttrGet_log_stat(eventhp, OCI_HTYPE_EVENT, (dvoid *)&event_att, &event_att_len, OCI_ATTR_DBNAME, imp_dbh->errhp, status);
+ hv_store(ha_event,"Name",5,sv_2mortal(newSVpv((char*)event_att,event_att_len)),0);
- if (status_att == 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_HOSTNAME, imp_dbh->errhp, status);
- PerlIO_printf(DBILOGFP, " hacb 3 OCI_ATTR_DBDOMAIN=%s \n",dbdomain_att);
+ hv_store(ha_event,"Host",4,sv_2mortal(newSVpv((char*)event_att,event_att_len)),0);
- hv_store(ha_event,"Domain",6,sv_2mortal(newSVpv((char*)dbdomain_att,dbdomain_len)),0);
+ OCIAttrGet_log_stat(eventhp, OCI_HTYPE_EVENT, (dvoid *)&event_att, &event_att_len, OCI_ATTR_INSTNAME, imp_dbh->errhp, status);
- OCIAttrGet_log_stat(eventhp, OCI_HTYPE_EVENT, (dvoid *)&dbname_att, &dbname_len, OCI_ATTR_DBNAME, imp_dbh->errhp, status);
+ hv_store(ha_event,"Instance",8,sv_2mortal(newSVpv((char*)event_att,event_att_len)),0);
- PerlIO_printf(DBILOGFP, " hacb 4 OCI_ATTR_DBNAME=%s \n",dbname_att);
- hv_store(ha_event,"Name",5,sv_2mortal(newSVpv((char*)dbname_att,dbname_len)),0);
+ OCIAttrGet_log_stat(eventhp, OCI_HTYPE_EVENT, (dvoid *)&event_att, &event_att_len, OCI_ATTR_SERVICENAME, imp_dbh->errhp, status);
+ hv_store(ha_event,"Service",7,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_ts,0, OCI_ATTR_HA_TIMESTAMP, imp_dbh->errhp, status);
- hv_store(ha_event,"Host",4,sv_2mortal(newSVpv((char*)hostname_att,hostname_len)),0);
+ // OCIDateTimeToText_log_stat(imp_dbh->envhp,imp_dbh->errhp,event_ts,&event_att_len,tsbuff,status);
- OCIAttrGet_log_stat(eventhp, OCI_HTYPE_EVENT, (dvoid *)&instance_att, &instance_len, OCI_ATTR_INSTNAME, 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"),
+ (ub1)4, (OraText *)0, 0,&event_att_len, tsbuff);
- PerlIO_printf(DBILOGFP, " hacb 6 OCI_ATTR_INSTNAME=%s \n",instance_att);
+ hv_store(ha_event,"Timestamp",9,sv_2mortal(newSVpv((char*)tsbuff,event_att_len)),0);
- hv_store(ha_event,"Instance",8,sv_2mortal(newSVpv((char*)instance_att,instance_len)),0);
+ dbd_verbose=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 *)&srvhp,0, OCI_ATTR_HA_SRVFIRST, imp_dbh->errhp, status);
+ PerlIO_printf(DBILOGFP, " how about event_att=%d nodata=%d \n",status,OCI_NO_DATA);
- hv_store(ha_event,"Service",7,sv_2mortal(newSVpv((char*)service_att,service_len)),0);
+ OCIAttrGet_log_stat(srvhp, OCI_HTYPE_SERVER, (dvoid *)&event_att,&event_att_len, OCI_ATTR_INSTNAME, imp_dbh->errhp, status);
+ PerlIO_printf(DBILOGFP, " how about srvhp=%s \n",event_att);
- 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);
+ OCIAttrGet_log_stat(srvhp, OCI_HTYPE_SERVER, (dvoid *)&event_code,0, OCI_ATTR_SERVER_STATUS, imp_dbh->errhp, status);
-hv_store(ha_event,"Timestamp",9,sv_2mortal(newSVpv((char*)str_buf,str_len)),0);
+ PerlIO_printf(DBILOGFP, " how about the HA server STAUTSp=%d ,%d, %d\n",event_code,OCI_SERVER_NORMAL ,OCI_SERVER_NOT_CONNECTED );
- PerlIO_printf(DBILOGFP, " hacb 8 OCI_HA_TIMESTAMP=%s \n",str_buf);
+ OCIAttrGet_log_stat(imp_dbh->srvhp, OCI_HTYPE_SERVER, (dvoid *)&event_code,0, OCI_ATTR_SERVER_STATUS, imp_dbh->errhp, status);
+ PerlIO_printf(DBILOGFP, " how about the currecnt connec tion 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_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));
+ OCIAttrGet_log_stat(eventhp, OCI_HTYPE_EVENT, (dvoid *)&srvhp,0, OCI_ATTR_HA_SRVNEXT, imp_dbh->errhp, status);
- PerlIO_printf(DBILOGFP, " hacb 9 server instance from new srvph name=%s \n",event_att);
+ PerlIO_printf(DBILOGFP, " how about event_att=%d HA next \n",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");
-
- 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));
-
- }
- }
-
- hv_store(ha_event,"Instances",9,newRV_noinc((SV*)servers),0);
- XPUSHs(sv_2mortal(newRV((SV*)ha_event)));
- PUTBACK;
+ XPUSHs(sv_2mortal(newRV((SV*)ha_event)));
+ PUTBACK;
call_pv(ctx->function, G_DISCARD);
-
}