1 /*_############################################################################ 2 _## 3 _## SNMP4J-Agent - MOQuery.java 4 _## 5 _## Copyright (C) 2005-2007 Frank Fock (SNMP4J.org) 6 _## 7 _## Licensed under the Apache License, Version 2.0 (the "License"); 8 _## you may not use this file except in compliance with the License. 9 _## You may obtain a copy of the License at 10 _## 11 _## http://www.apache.org/licenses/LICENSE-2.0 12 _## 13 _## Unless required by applicable law or agreed to in writing, software 14 _## distributed under the License is distributed on an "AS IS" BASIS, 15 _## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 _## See the License for the specific language governing permissions and 17 _## limitations under the License. 18 _## 19 _##########################################################################*/ 20 21 22 package org.snmp4j.agent; 23 24 /** 25 * A managed object query is used to lookup managed objects, for example in 26 * a {@link MOServer} repository. 27 * 28 * @author Frank Fock 29 * @version 1.1 30 */ 31 public interface MOQuery { 32 33 /** 34 * Gets the search range of this query. 35 * @return 36 * a <code>MORange</code> instance denoting upper and lower bound 37 * of this queries scope. 38 */ 39 MOContextScope getScope(); 40 41 /** 42 * Checks whether a managed object matches the internal query criteria 43 * defined by this query. 44 * 45 * @param managedObject 46 * the <code>ManagedObject</code> instance to check. 47 * @return 48 * <code>true</code> if the <code>managedObject</code> matches the query. 49 */ 50 boolean matchesQuery(ManagedObject managedObject); 51 52 /** 53 * Changes the query to no longer match (cover) the specified scope. 54 * If the query's scope is immutable (does not implement the 55 * {@link MutableMOScope} interface, then this method will throw an 56 * {@link UnsupportedOperationException}. 57 * @param scope 58 * a <code>MOScope</code> instance that defines the range of OIDs 59 * that should be no longer in the scope of this query. 60 */ 61 void substractScope(MOScope scope); 62 63 /** 64 * Indicates whether this query is issued on behalf of an intended write 65 * access on the ManagedObjects matched by this query. This information can 66 * be used to optimize query evaluation or to control resource allocation. 67 * 68 * @return 69 * <code>true</code> if this query is performed to change or create a 70 * managed object matching this query and <code>false</code> if the 71 * query is for read-only access on the matched managed objects. 72 * @since 1.1 73 */ 74 boolean isWriteAccessQuery(); 75 } 76