001 /*
002 * Copyright 2014 UnboundID Corp.
003 * All Rights Reserved.
004 */
005 /*
006 * Copyright (C) 2014 UnboundID Corp.
007 *
008 * This program is free software; you can redistribute it and/or modify
009 * it under the terms of the GNU General Public License (GPLv2 only)
010 * or the terms of the GNU Lesser General Public License (LGPLv2.1 only)
011 * as published by the Free Software Foundation.
012 *
013 * This program is distributed in the hope that it will be useful,
014 * but WITHOUT ANY WARRANTY; without even the implied warranty of
015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
016 * GNU General Public License for more details.
017 *
018 * You should have received a copy of the GNU General Public License
019 * along with this program; if not, see <http://www.gnu.org/licenses>.
020 */
021 package com.unboundid.ldap.listener.interceptor;
022
023
024
025 import com.unboundid.ldap.sdk.ExtendedResult;
026 import com.unboundid.ldap.sdk.LDAPException;
027 import com.unboundid.util.NotExtensible;
028 import com.unboundid.util.ThreadSafety;
029 import com.unboundid.util.ThreadSafetyLevel;
030
031
032
033 /**
034 * This class provides an API that can be used in the course of processing a
035 * result via the {@link InMemoryOperationInterceptor} API.
036 */
037 @NotExtensible()
038 @ThreadSafety(level=ThreadSafetyLevel.INTERFACE_NOT_THREADSAFE)
039 public interface InMemoryInterceptedResult
040 {
041 /**
042 * Retrieves the connection ID for the associated client connection.
043 *
044 * @return The connection ID for the associated client connection.
045 */
046 long getConnectionID();
047
048
049
050 /**
051 * Retrieves the server address to which the client is connected, if
052 * available.
053 *
054 * @return The server address to which the client is connected, or
055 * {@code null} if this is not available for some reason.
056 */
057 String getConnectedAddress();
058
059
060
061 /**
062 * Retrieves the server port to which the client is connected, if available.
063 *
064 * @return The server port to which the client is connected, or -1 if this is
065 * not available for some reason.
066 */
067 int getConnectedPort();
068
069
070
071 /**
072 * Retrieves the LDAP message ID for this operation.
073 *
074 * @return The LDAP message ID for this operation.
075 */
076 int getMessageID();
077
078
079
080 /**
081 * Sends an unsolicited notification message to the client.
082 *
083 * @param unsolicitedNotification The unsolicited notification to send to
084 * the client. It must not be {@code null}.
085 *
086 * @throws LDAPException If a problem is encountered while trying to send
087 * the unsolicited notification.
088 */
089 void sendUnsolicitedNotification(final ExtendedResult unsolicitedNotification)
090 throws LDAPException;
091
092
093
094 /**
095 * Retrieves the value for a property that has previously been set for this
096 * operation. This can be used to help maintain state information across the
097 * request and response for an operation.
098 *
099 * @param name The name of the property for which to retrieve the
100 * corresponding value. It must not be {@code null}.
101 *
102 * @return The value for the requested property, or {@code null} if there is
103 * no value for the specified property.
104 */
105 Object getProperty(final String name);
106 }