DatiCollezionatiDistributedAtomicLongAsync.java

  1. /*
  2.  * GovWay - A customizable API Gateway
  3.  * https://govway.org
  4.  *
  5.  * Copyright (c) 2005-2025 Link.it srl (https://link.it).
  6.  *
  7.  * This program is free software: you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 3, as published by
  9.  * the Free Software Foundation.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  */


  20. package org.openspcoop2.pdd.core.controllo_traffico.policy.driver.hazelcast.counters;

  21. import java.util.Date;

  22. import org.openspcoop2.core.controllo_traffico.beans.ActivePolicy;
  23. import org.openspcoop2.core.controllo_traffico.beans.DatiCollezionati;
  24. import org.openspcoop2.core.controllo_traffico.beans.IDUnivocoGroupByPolicyMapId;
  25. import org.slf4j.Logger;

  26. import com.hazelcast.core.HazelcastInstance;

  27. /**
  28.  *
  29.  * L'incremento e il decremento dei contatori viene fatto in maniera asincrona, il reset resta sincrono.
  30.  *
  31.  * @author Francesco Scarlato (scarlato@link.it)
  32.  * @author $Author$
  33.  * @version $Rev$, $Date$
  34.  */
  35. public class DatiCollezionatiDistributedAtomicLongAsync extends DatiCollezionatiDistributedAtomicLong {

  36.     private static final long serialVersionUID = 1L;

  37.     public DatiCollezionatiDistributedAtomicLongAsync(Logger log, Date updatePolicyDate, Date gestorePolicyConfigDate, HazelcastInstance hazelcast, IDUnivocoGroupByPolicyMapId groupByPolicyMapId, ActivePolicy activePolicy) {
  38.         super(log, updatePolicyDate, gestorePolicyConfigDate, hazelcast, groupByPolicyMapId, activePolicy);
  39.     }
  40.    
  41.    
  42.     public DatiCollezionatiDistributedAtomicLongAsync(Logger log, DatiCollezionati dati, HazelcastInstance hazelcast, IDUnivocoGroupByPolicyMapId groupByPolicyMapId, ActivePolicy activePolicy) {
  43.         super(log, dati, hazelcast, groupByPolicyMapId, activePolicy);
  44.     }

  45.    
  46.     @Override
  47.     protected void internalRegisterStartRequestIncrementActiveRequestCounter(DatiCollezionati datiCollezionatiPerPolicyVerifier) {
  48.         if(this.distribuitedActiveRequestCounterPolicyRichiesteSimultanee){
  49.             if(datiCollezionatiPerPolicyVerifier!=null) {
  50.                 this.distributedActiveRequestCounterForCheck.incrementAndGetAsync();
  51.                 super.activeRequestCounter = datiCollezionatiPerPolicyVerifier.setAndGetActiveRequestCounter(this.distributedActiveRequestCounterForCheck.get());
  52.             }
  53.             else {
  54.                 this.distributedActiveRequestCounterForCheck.incrementAndGetAsync();
  55.             }
  56.         }
  57.         else {
  58.             super.internalRegisterStartRequestIncrementActiveRequestCounter(datiCollezionatiPerPolicyVerifier);
  59.         }
  60.     }
  61.    
  62.    
  63.     @Override
  64.     protected void internalUpdateDatiStartRequestApplicabileIncrementRequestCounter(DatiCollezionati datiCollezionatiPerPolicyVerifier) {
  65.         if(datiCollezionatiPerPolicyVerifier!=null) {
  66.             this.distributedPolicyRequestCounter.incrementAndGetAsync();
  67.             super.policyRequestCounter = datiCollezionatiPerPolicyVerifier.setAndGetPolicyRequestCounter(this.distributedPolicyRequestCounter.get());
  68.         }
  69.         else {
  70.             this.distributedPolicyRequestCounter.incrementAndGetAsync();
  71.         }
  72.     }
  73.    
  74.    
  75.     @Override
  76.     protected void internalRegisterEndRequestDecrementActiveRequestCounter() {
  77.         if(this.distribuitedActiveRequestCounterPolicyRichiesteSimultanee){
  78.             this.distributedActiveRequestCounterForCheck.decrementAndGet();
  79.         }
  80.         else {
  81.             super.internalRegisterEndRequestDecrementActiveRequestCounter();
  82.         }
  83.     }
  84.     @Override
  85.     protected void internalRegisterEndRequestIncrementDegradoPrestazionaleRequestCounter() {
  86.         this.distributedPolicyDegradoPrestazionaleRequestCounter.incrementAndGetAsync();
  87.     }
  88.     @Override
  89.     protected void internalRegisterEndRequestIncrementDegradoPrestazionaleCounter(long latenza) {
  90.         this.distributedPolicyDegradoPrestazionaleCounter.addAndGetAsync(latenza);
  91.     }
  92.    
  93.    
  94.     @Override
  95.     protected void internalUpdateDatiEndRequestApplicabileIncrementRequestCounter() {
  96.         this.distributedPolicyRequestCounter.incrementAndGetAsync();
  97.     }
  98.     @Override
  99.     protected void internalUpdateDatiEndRequestApplicabileDecrementRequestCounter() {
  100.         this.distributedPolicyRequestCounter.decrementAndGetAsync();
  101.     }
  102.     @Override
  103.     protected void internalUpdateDatiEndRequestApplicabileIncrementCounter(long v) {
  104.         this.distributedPolicyCounter.addAndGetAsync(v);
  105.     }
  106.    
  107.    
  108.     // Getters necessari poichè non viene aggiornato il field nella classe nonno DatiCollezionati, poichè si usa il metodo Async
  109.     // Quindi in fase di lettura deve SEMPRE essere utilizzato il get
  110.    
  111.     @Override
  112.     public Long getActiveRequestCounter(boolean readRemoteInfo) {
  113.         if(this.distribuitedActiveRequestCounterPolicyRichiesteSimultanee){
  114.             return this.distributedActiveRequestCounterForCheck.get();
  115.         }
  116.         else {
  117.             return this.distributedActiveRequestCounterForStats.get();
  118.         }
  119.     }
  120.     @Override
  121.     public Long getPolicyDenyRequestCounter(boolean readRemoteInfo) {
  122.         if(this.distributedPolicyDenyRequestCounter!=null) {
  123.             return this.distributedPolicyDenyRequestCounter.get();
  124.         }
  125.         else {
  126.             return null;
  127.         }
  128.     }
  129.    
  130.     @Override
  131.     public Long getPolicyRequestCounter(boolean readRemoteInfo) {
  132.         if(this.distributedPolicyRequestCounter!=null) {
  133.             return this.distributedPolicyRequestCounter.get();
  134.         }
  135.         else {
  136.             return null;
  137.         }
  138.     }
  139.     @Override
  140.     public Long getPolicyCounter(boolean readRemoteInfo) {
  141.         if(this.distributedPolicyCounter!=null) {
  142.             return this.distributedPolicyCounter.get();
  143.         }
  144.         else {
  145.             return null;
  146.         }
  147.     }  
  148.    
  149.     @Override
  150.     public Long getPolicyDegradoPrestazionaleRequestCounter(boolean readRemoteInfo) {
  151.         if(this.distributedPolicyDegradoPrestazionaleRequestCounter!=null) {
  152.             return this.distributedPolicyDegradoPrestazionaleRequestCounter.get();
  153.         }
  154.         else {
  155.             return null;
  156.         }
  157.     }
  158.     @Override
  159.     public Long getPolicyDegradoPrestazionaleCounter(boolean readRemoteInfo) {
  160.         if(this.distributedPolicyDegradoPrestazionaleCounter!=null) {
  161.             return this.distributedPolicyDegradoPrestazionaleCounter.get();
  162.         }
  163.         else {
  164.             return null;
  165.         }
  166.     }

  167. }