/**
* The readable data source is responsible for retrieving configs (read-only).
*
* @param <S> source data type
* @param <T> target data type
* @author leyou
* @author Eric Zhao
*/publicinterfaceReadableDataSource<S,T>{/**
* Load data data source as the target type.
*
* @return the target data.
* @throws Exception IO or other error occurs
*/TloadConfig()throwsException;/**
* Read original data from the data source.
*
* @return the original data.
* @throws Exception IO or other error occurs
*/SreadSource()throwsException;/**
* Get {@link SentinelProperty} of the data source.
*
* @return the property.
*/SentinelProperty<T>getProperty();/**
* Close the data source.
*
* @throws Exception IO or other error occurs
*/voidclose()throwsException;}
/**
* Interface of writable data source support.
*
* @author Eric Zhao
* @since 0.2.0
*/publicinterfaceWritableDataSource<T>{/**
* Write the {@code value} to the data source.
*
* @param value value to write
* @throws Exception IO or other error occurs
*/voidwrite(Tvalue)throwsException;/**
* Close the data source.
*
* @throws Exception IO or other error occurs
*/voidclose()throwsException;}