*/
package org.opendaylight.protocol.pcep;
-import org.opendaylight.protocol.framework.ProtocolSession;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Message;
+import io.netty.util.concurrent.Future;
+import java.net.InetAddress;
+import javax.annotation.Nonnull;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.Message;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.open.object.open.Tlvs;
/**
* PCEP Session represents the finite state machine in PCEP, including timers and its purpose is to create a PCEP
* manually. If the session is up, it has to redirect messages to/from user. Handles also malformed messages and unknown
* requests.
*/
-public interface PCEPSession extends ProtocolSession<Message> {
-
- /**
- * Sends message from user to PCE/PCC. If the user sends an Open Message, the session returns an error (open message
- * is only allowed, when a PCEP handshake is in progress). Close message will close the session and free all the
- * resources.
- *
- * @param message message to be sent
- */
- public void sendMessage(Message message);
-
- public void close(TerminationReason reason);
+public interface PCEPSession extends PCEPSessionState, AutoCloseable {
+
+ /**
+ * Sends message from user to PCE/PCC. If the user sends an Open Message, the session returns an error (open message
+ * is only allowed, when a PCEP handshake is in progress). Close message will close the session and free all the
+ * resources.
+ *
+ * @param message message to be sent
+ * @return Future promise which will be succeed when the message is enqueued in the socket.
+ */
+ Future<Void> sendMessage(Message message);
+
+ void close(TerminationReason reason);
+
+ /**
+ * Returns session characteristics of the remote PCEP Speaker.
+ *
+ * @return Open message TLVs
+ */
+ Tlvs getRemoteTlvs();
+
+ /**
+ * Returns remote address.
+ *
+ * @return inet address
+ */
+ @Nonnull
+ InetAddress getRemoteAddress();
+
+ /**
+ * Returns session characteristics of the local PCEP Speaker.
+ *
+ * @return Open message TLVs
+ */
+ Tlvs getLocalTlvs();
+
+ /**
+ * Returns session characteristics of the local PCEP Speaker.
+ *
+ * @return Open message TLVs
+ */
+ @Deprecated
+ default Tlvs localSessionCharacteristics() {
+ return getLocalTlvs();
+ }
}