⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 writedallog.pm

📁 Perl开发的数据采集工具 基于UNIX
💻 PM
字号:
package WriteDallog;#################################################################################  @(#) Perl Module: WriteDallog##  Copyright(C) 2002-2004 BOCO Inter-Telecom DC Team, All Rights Reserved##  Author(s): JIA XL##  Creation Date:  2003/01/15##  Last update Date: 2003/02/25##  Description:################################################################################use strict;use DBI;use IO::String;use XML::Writer;use Data::Dumper;use Date::Format;use MQClient::MQSeries;use MQSeries::QueueManager;use MQSeries::Queue;use MQSeries::Message;use DBIs;use LDAP_API;######################################################################### Function: new## Input: null## Output:## Description:########################################################################sub new {	my ($type,$common_part) = @_;	my $self = {};    	$self->{'mq_handle'}=0;     	$self->{'db_handle'}=0;     	$self->{'common'}=$common_part;     	bless $self, $type;    	return $self;}######################################################################### Function: connect_MQ## Input: ## Output:## Description: ########################################################################sub connect_MQ {	my ($self,$qmgrname,$requestqname,$mode)=@_;		#-------------------------------    	# Step one: connect to the queuemanager.	#-------------------------------    	my $reason;    	my $qmgr = MQSeries::QueueManager->new( QueueManager => $qmgrname ) || return -1;	#---------------------------    	# Step two: open the dest queue 	#---------------------------    	my $connect = MQSeries::Queue->new    		(      		QueueManager		=> $qmgr,      		Queue		=> $requestqname,      		Mode			=> $mode,      		Reason                    => \$reason,     		) || return -1;     	$self->{'mq_handle'}=$connect;          	return 1;}######################################################################## Function: FmtHASH2XML## Input:## Output:## Description:########################################################################sub FmtHASH2XML {	my ($self,$hash_ref) = @_;	#print "Hash Structure:",Dumper($hash_ref);        my $xml_str;        my $output = IO::String->new($xml_str);        my $write_hdl = XML::Writer->new(                                OUTPUT => $output,                                NEWLINES => 1                        );        $write_hdl->xmlDecl("gb2312");        $write_hdl->startTag('Message');        $self->WriteXmlBody($hash_ref,$write_hdl);        $write_hdl->endTag('Message');        $write_hdl->end();        $output->close();	#print "\nXML String: $xml_str \n";        return ($xml_str);}######################################################################## Function: WriteXmlBody## Input:## Output:## Description: it's called by sub FmtHASH2XML########################################################################sub WriteXmlBody {        my ($self,$hash_ref,$write_hdl) = @_;        foreach my $key (keys %$hash_ref) {                if (ref($hash_ref->{$key})) {                        $write_hdl->startTag($key);                        $self->WriteXmlBody($hash_ref->{$key},$write_hdl);                        $write_hdl->endTag($key);                }                elsif ( $key !~ /HASH/ ) {                        $write_hdl->startTag($key);                        $write_hdl->characters($hash_ref->{$key});                        $write_hdl->endTag($key);                }        }	#print "Success to Format HASH2XML \n";}######################################################################### Function: send_MQ## Input:## Output:## Description:########################################################################sub send_MQ {	my ($self,$msg,$msg_type) = @_ ;	if (!$msg_type) {		$msg_type =1280;	}	$msg_type += 65536;      	my $sendmsg = MQSeries::Message->new (		MsgDesc		=> {			MsgType		=> $msg_type,		},       		Data		=> $msg,      	);    	#--------------------------       	# send MSG to MQGR queue     	#--------------------------      	($self->{mq_handle})->Put(Message => $sendmsg);      	if((($self->{mq_handle})->CompCode()== &MQCC_OK) || (($self->{mq_handle})->CompCode()== &MQCC_WARNING)) {		return 1;	}      	if(($self->{mq_handle})->CompCode()== &MQCC_FAILED) {        	print "the reason is ($self->{mq_handle})->Reason()\n";         	return -1;      	}}######################################################################### Function: receive_MQ## Input:## Output:## Description:########################################################################sub receive_MQ {	my ($self,$pollrate) = @_ ;     	my $request = MQSeries::Message->new();     	while(1) {      		($self->{mq_handle})->Get (           		Message 	=> $request,           		Wait	        => $pollrate,         	);            		if(($self->{mq_handle})->CompCode()== &MQCC_OK || ($self->{mq_handle})->CompCode()== &MQCC_WARNING) {         		#print "Request: " . $request->Data() . "\n";         		my $receive_data = $request->Data();         		return $receive_data;      		}      		if(($self->{mq_handle})->CompCode()== &MQCC_FAILED) {			my $reason = ($self->{mq_handle})->Reason();         		print "the failed reason:\n",$reason,"\n";         		if (($self->{mq_handle})->Reason() == &MQRC_NO_MSG_AVAILABLE) {	    			print "Timed out waiting for requests.  Retrying...\n";	    			return 0;         		}          		return -1;      		}          	}}######################################################################### Function: mq_commit## Input:## Output:## Description:########################################################################sub mq_commit {	my ($self) = @_;    	if((($self->{mq_handle})->Commit())==1) {       		print "commit the MQ transaction successful\n";       		return 1;    	}else{       		print "commit the MQ transaction failed\n";        		return 0;    	}}######################################################################### Function: mq_rollback## Input:## Output:## Description:########################################################################sub mq_rollback {	my ($self) = @_;	if((($self->{mq_handle})->Backout())==1) {       		print "rollback the MQ transaction successful\n";       		return 1;    	}else{       		print "rollback the MQ transaction failed\n";        		return 0;    	}}######################################################################### Function: ConnectDb## Input:## Output:## Description:########################################################################sub connect_DB {	my ($self,$db_type,$db_server,$database,$user,$passwd) = @_;	my $connect_str;        if ($db_type =~ /informix/i) {		$db_type='Informix';                $connect_str = "dbi:$db_type:$database" . "\@$db_server";        }        elsif ($db_type =~ /oracle/i) {		$db_type='Oracle';                $connect_str = "dbi:$db_type:$db_server";        }        my $db_hdl = DBI->connect($connect_str, $user, $passwd);	my $lock_mode = "set lock mode to wait 60";	$db_hdl->do($lock_mode);        if (!$db_hdl) {                my $err_msg = "Error: Can not connect to database $db_server: $DBI::errstr\n";                return (-1,$err_msg);        }	$self->{'db_handle'} = $db_hdl;	return 1;}######################################################################### Function: WritelogTbl## Input:## Output:## Description: Get arguments from command line########################################################################sub WritelogTbl {	my ($self,$hash_ref,$table_name) = @_;	if (!$table_name) {		$table_name = 'dal_log';	}	my $db_hdl = $self->{'db_handle'};        my (@column,@values);        my $i=0;        foreach my $key (keys %$hash_ref) {                $column[$i] = $key;                $values[$i] = $hash_ref->{$key};                $i++;        }        my $insert_sql = "insert into $table_name (";	my $value_str = '';        for ($i=0;$i<@column;$i++) {                $insert_sql .= $column[$i].",";		$value_str  .= "?,";        }        chop $insert_sql;	chop $value_str;        $insert_sql = $insert_sql.")"." values ($value_str)";        #print "\n\nWriting log_table SQL:\n\t$insert_sql\n\n";	my ($r,$str);        my $sth = $db_hdl->prepare($insert_sql)|| (($r=$DBI::err)&&($str=$DBI::errstr));        if ($r) {                $db_hdl->rollback;                return (-1,"$str");        }        for ($i=1;$i<=@values;$i++) {                my $j = $i-1;                $sth->bind_param($i,$values[$j]);        }        $sth->execute || (($r=$DBI::err) &&($str=$DBI::errstr));        if ($r) {                return (-1, "\n$str");        }        return (1,"Success\n");}sub close {	my ($pkg) = @_;	undef($pkg);	return($pkg);}return 1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -