Changeset 1824 for trunk/LATMOS-Accounts


Ignore:
Timestamp:
07/11/16 14:43:44 (8 years ago)
Author:
nanardon
Message:

Order module to optimize data update

Location:
trunk/LATMOS-Accounts
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LATMOS-Accounts/bin/la-sync-manager

    r1744 r1824  
    120120        $SIG{INT} = 'DEFAULT'; 
    121121        my $res = 0; 
    122         foreach my $module ($syncm->list_modules()) { 
     122        foreach my $module ($syncm->listSortedModules()) { 
    123123            $res = 1 if (!$syncm->process_module($module)); 
    124124        } 
  • trunk/LATMOS-Accounts/lib/LATMOS/Accounts/SyncManager.pm

    r1742 r1824  
    121121} 
    122122 
    123 =head2 process_module($module) 
    124  
    125 Process C<$module>. 
    126  
    127 =cut 
    128  
    129 # TODO what is $dbrev, why is it need here ?? 
    130  
    131 sub process_module { 
    132     my ($self, $module) = @_; 
    133  
    134     eval { 
    135         if (!$self->ini->SectionExists($module)) { 
    136             la_log LA_ERR, "Cannot run inexistant module %s", $module; 
    137             return; 
    138         } 
    139  
     123 
     124=head2 listSortedModules 
     125 
     126List configured module ordered for running 
     127 
     128=cut 
     129 
     130sub listSortedModules { 
     131    my ($self) = @_; 
     132 
     133    my %modules = (); 
     134 
     135    foreach my $module ($self->list_modules) { 
     136        $modules{$module} = 1; 
    140137        my $modtype = $self->ini->val($module, 'type', $module); 
    141138        my $task = LATMOS::Accounts::Task->new( 
     
    147144            or do { 
    148145            la_log(LA_ERR, 'Cannot load module %s', $modtype); 
     146            next; 
     147        }; 
     148 
     149        $modules{$module} = $task->order; 
     150    } 
     151 
     152    return sort { $modules{$a} <=> $modules{$b} } keys %modules; 
     153} 
     154 
     155=head2 process_module($module) 
     156 
     157Process C<$module>. 
     158 
     159=cut 
     160 
     161# TODO what is $dbrev, why is it need here ?? 
     162 
     163sub process_module { 
     164    my ($self, $module) = @_; 
     165 
     166    eval { 
     167        if (!$self->ini->SectionExists($module)) { 
     168            la_log LA_ERR, "Cannot run inexistant module %s", $module; 
     169            return; 
     170        } 
     171 
     172        my $modtype = $self->ini->val($module, 'type', $module); 
     173        my $task = LATMOS::Accounts::Task->new( 
     174            $modtype, 
     175            config => $self->{config}, 
     176            name   => $module, 
     177            syncm  => $self, 
     178        ) 
     179            or do { 
     180            la_log(LA_ERR, 'Cannot load module %s', $modtype); 
    149181            return; 
    150182        }; 
  • trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Task.pm

    r1740 r1824  
    4848    return $self->{syncm}->ini->val($self->{name}, $value, $default) 
    4949} 
     50 
     51=head2 order 
     52 
     53Return the priority for the module: 0, 1 or 3 (0 = first) 
     54 
     55=cut 
     56 
     57sub order { 1 } 
    5058 
    5159=head2 init 
  • trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Task/Basessynchro.pm

    r1206 r1824  
    1616 
    1717=cut 
     18 
     19sub order { 2 } 
    1820 
    1921sub run { 
  • trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Task/Employment.pm

    r1789 r1824  
    1616 
    1717=cut 
     18 
     19sub order { 0 } 
    1820 
    1921sub init { 
  • trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Task/Refreshexpired.pm

    r1802 r1824  
    2525 
    2626=cut 
     27 
     28sub order { 0 } 
    2729 
    2830# Every 10 minutes 
Note: See TracChangeset for help on using the changeset viewer.