All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.exactpro.sf.services.ISession Maven / Gradle / Ivy

There is a newer version: 3.4.260
Show newest version
/******************************************************************************
 * Copyright 2009-2018 Exactpro (Exactpro Systems Limited)
 *
 * 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 com.exactpro.sf.services;

import com.exactpro.sf.common.messages.IMessage;
import com.exactpro.sf.common.messages.IMetadata;

public interface ISession
{

	/**
	 * @return session name
	 */
	String getName();

	/**
	 * Sends a message within send message timeout from service settings
	 * @param message object to be sent
	 */
	IMessage send(Object message) throws InterruptedException;

    /**
     * Sends a message within timeout
     * @param message object to be sent
     * @param timeout time in milliseconds for message sending. It should be greater than zero.
     */
    default IMessage send(Object message, long timeout) throws InterruptedException {
        return send(message);
    }

	/**
	 * Sends dirty message within send message timeout from service settings
	 * @param message object to be sent
	 */
	IMessage sendDirty(Object message)  throws InterruptedException;

	/**
	 * Sends dirty message within timeout
	 * @param message object to be sent
     * @param timeout time in milliseconds for message sending. It should be greater than zero.
	 */
	default IMessage sendDirty(Object message, long timeout)  throws InterruptedException {
	    return sendDirty(message);
    }

	/**
	 * close session
	 */
	void close();

	/**
	 * Check whether session is closed.
	 * @return return {@code true} if session is closed. {@code false} otherwise.
	 */
	boolean isClosed();

	/**
	 * Is the session logged on.
	 * @return true if logged on, false otherwise.
	 */
	boolean isLoggedOn();

    /**
     * close session without sending message on closing
     */
    default void forceClose() {
        throw new UnsupportedOperationException("Force close is not implemented");
    }

    /**
     * @see #sendRaw(byte[], IMetadata)
     * @deprecated will be removed in the future. Use {@link #sendRaw(byte[], IMetadata)}
     */
    @Deprecated
    default void sendRaw(byte[] rawData) throws InterruptedException {
        sendRaw(rawData, IMetadata.EMPTY);
    }

    default void sendRaw(byte[] rawData, IMetadata extraMetadata) throws InterruptedException {
        throw new UnsupportedOperationException("Sending raw data is not supported");
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy