Advertisement
tantraputra

database.pm

Oct 19th, 2012
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.51 KB | None | 0 0
  1. package Database;
  2.  
  3. use Modern::Perl '2012';
  4. use DateTime;
  5. use DateTime::Format::Pg;
  6. use MIME::Base64;
  7. use Digest::CRC;
  8. use Log::Log4perl;
  9. use Local_DB;
  10. use Try::Tiny;
  11.  
  12. #-------------------------------------------------------------------------------
  13. #  Initialize logger
  14. #-------------------------------------------------------------------------------
  15. my $log_conf = "log4perl.conf";
  16. Log::Log4perl::init($log_conf);
  17. my $logger = Log::Log4perl->get_logger();
  18. $Log::Log4perl::JOIN_MSG_ARRAY_CHAR = " <*> ";
  19.  
  20. #-------------------------------------------------------------------------------
  21. #  Database connection
  22. #-------------------------------------------------------------------------------
  23. my $dbh = Local_DB::get_connection();
  24.  
  25. #===  FUNCTION  ================================================================
  26. #         NAME: _pending_jobs
  27. #      PURPOSE: Check for pending jobs from database
  28. #   PARAMETERS: $imei: IMEI
  29. #      RETURNS: true/false
  30. #  DESCRIPTION: Check if any pending jobs are on queue from database
  31. #       THROWS: no exceptions
  32. #     COMMENTS: none
  33. #     SEE ALSO: n/a
  34. #===============================================================================
  35. sub _check4pending {
  36.     my ( $imei ) = @_;
  37.  
  38.     my $sql = qq#
  39.         SELECT COUNT(action_id)
  40.           FROM fp_action_log ac
  41.          WHERE action IN ('ADD_AMEND', 'DELETE', 'DELETE_ALL', 'FIRMWARE')
  42.            AND status = 'pending'
  43.            AND imei = :imei
  44.     #;
  45.     my $sth = $dbh->prepare($sql) or
  46.         die "Can't prepare SQL statement: $DBI::errstr\n";
  47.     $sth->bind_param(':imei', $imei);
  48.     $sth->execute() or
  49.         die "Can't execute SQL statement: $DBI::errstr\n";
  50.  
  51.     my $jobs = $sth->fetchrow_arrayref()->[0];
  52.  
  53.     $sth->finish;
  54.  
  55.     return $jobs;
  56. }
  57.  
  58. <!-- snip -->
  59.  
  60. sub _assemble_package {
  61.     my ( $heap, $pkg_h, $sig_inc ) = @_;
  62.  
  63.     $heap->{package_id} + 1 > 255
  64.       ? $heap->{package_id} = 1
  65.       : $heap->{package_id} += 1;
  66.  
  67.     my $pkg;
  68.  
  69.     if ( $sig_inc eq "Y" ) {
  70.         $heap->{sig_id} += 1;
  71.  
  72.         $pkg =
  73.             $pkg_h->{length}
  74.           . pack( "C", $heap->{package_id} )
  75.           . $pkg_h->{content}
  76.           . pack( "N", $heap->{sig_id} )
  77.           . ( $pkg_h->{t_part} || '' );
  78.     }
  79.     else {
  80.         $pkg =
  81.             $pkg_h->{length}
  82.           . pack( "C", $heap->{package_id} )
  83.           . $pkg_h->{content};
  84.     }
  85.  
  86.     $logger->debug( "PackageOUT[" . join( ' ', unpack( "(H2)*", $pkg ) ) . "]",
  87.         $heap->{imei} || "" );
  88.  
  89.     return $pkg;
  90. }
  91.  
  92. 1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement