TimerClusteredRateLimitingLocalCache.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 Link.it srl (https://link.it).
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- package org.openspcoop2.pdd.timers;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Set;
- import java.util.Map.Entry;
- import org.openspcoop2.core.controllo_traffico.beans.DatiCollezionati;
- import org.openspcoop2.core.controllo_traffico.beans.IDUnivocoGroupByPolicy;
- import org.openspcoop2.core.controllo_traffico.driver.IPolicyGroupByActiveThreadsInMemory;
- import org.openspcoop2.core.controllo_traffico.driver.PolicyException;
- import org.openspcoop2.core.controllo_traffico.driver.PolicyShutdownException;
- import org.openspcoop2.pdd.core.controllo_traffico.policy.driver.GestorePolicyAttiveInMemory;
- import org.openspcoop2.pdd.core.controllo_traffico.policy.driver.PolicyGroupByActiveThreads;
- import org.openspcoop2.pdd.core.controllo_traffico.policy.driver.hazelcast.PolicyGroupByActiveThreadsDistributedLocalCache;
- import org.openspcoop2.utils.threads.BaseThread;
- import org.slf4j.Logger;
- /**
- * TimerClusteredRateLimitingLocalCache
- *
- * @author Francesco Scarlato (scarlato@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class TimerClusteredRateLimitingLocalCache extends BaseThread{
-
- private final GestorePolicyAttiveInMemory gestorePolicy;
- private Logger log = null;
-
- public TimerClusteredRateLimitingLocalCache(Logger log, GestorePolicyAttiveInMemory gestorePolicy) {
- this.log = log;
- this.gestorePolicy = gestorePolicy;
- }
-
- @Override
- protected void process() {
- try {
- //System.out.println("TIMER DI AGGIORNAMENTO LOCAL CACHE MAP");
-
- this.log.info("Sync RateLimiting policy counters ...");
-
- updateLocalCacheMap();
-
- this.log.info("Sync RateLimiting policy counters finished");
-
- } catch (PolicyException e) {
- this.log.error(e.getMessage(),e);
- } catch (PolicyShutdownException e) {
- this.setStop(true);
- }
-
- }
- private void updateLocalCacheMap() throws PolicyShutdownException, PolicyException {
-
- Set<Entry<String, IPolicyGroupByActiveThreadsInMemory>> activeThreadsPolicies = this.gestorePolicy.entrySet();
-
-
- for (var policy : activeThreadsPolicies) {
-
- this.log.debug("["+policy.getKey()+"] update ...");
-
- PolicyGroupByActiveThreadsDistributedLocalCache distributedPolicy = (PolicyGroupByActiveThreadsDistributedLocalCache) policy.getValue();
-
- Map<IDUnivocoGroupByPolicy, DatiCollezionati> mapActiveThreads = new HashMap<IDUnivocoGroupByPolicy, DatiCollezionati>();
- for (var entry : distributedPolicy.getDistributedMapActiveThreads().entrySet()) {
- mapActiveThreads.put(entry.getKey(), entry.getValue());
- }
-
- PolicyGroupByActiveThreads localPolicy = distributedPolicy.getLocalPolicy();
- localPolicy.setMapActiveThreads(mapActiveThreads);
-
- this.log.debug("["+policy.getKey()+"] update ok");
- }
-
- }
- }