io.sarl.api.probing.ProbeService.sarl Maven / Gradle / Ivy
/*
* $Id$
*
* SARL is an general-purpose agent programming language.
* More details on http://www.sarl.io
*
* Copyright (C) 2014-2023 SARL.io, the Original Authors and Main Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.sarl.api.probing
import io.sarl.api.naming.name.SarlName
import java.net.URI
import java.util.Collection
import org.arakhne.afc.services.IService
/**
* This service provides probing mechanisms.
*
* @author Stéphane Galland
* @version api.probing 0.13.0 20230919-093058
* @mavengroupid io.sarl.sdk
* @mavenartifactid api.probing
* @since 0.12
*/
interface ProbeService extends IService {
/** Create a probe.
*
* If a probe with the same name name exists, a composed probe with the probe name is created with
* the probes as composite.
*
* @param valueName the probed element.
* @param valueType the expected type of the value.
* @param probeName is the optional name of the probe.
*/
def probe(valueName : SarlName, valueType : Class, probeName : String = null) : Probe with T
/** Create a probe.
*
* If a probe with the same name name exists, a composed probe with the probe name is created with
* the probes as composite.
*
* @param valueName the probed element.
* @param valueType the expected type of the value.
* @param probeName is the optional name of the probe.
*/
def probe(valueName : URI, valueType : Class, probeName : String = null) : Probe with T
/** Create a probe.
*
* If a probe with the same name name exists, a composed probe with the probe name is created with
* the probes as composite.
*
* @param valueName the probed element.
* @param valueType the expected type of the value.
* @param probeName is the optional name of the probe.
*/
def probe(valueName : String, valueType : Class, probeName : String = null) : Probe with T
/** Replies all the probes.
*
* @return the iterable on probes
*/
@Pure
def getProbes : Collection>
/** Release all the probes.
*/
def releaseAllProbes
/** Force the synchronization of the probes.
*/
def sync
}