10Sstevel@tonic-gate /* 20Sstevel@tonic-gate * CDDL HEADER START 30Sstevel@tonic-gate * 40Sstevel@tonic-gate * The contents of this file are subject to the terms of the 5*7298SMark.J.Nelson@Sun.COM * Common Development and Distribution License (the "License"). 6*7298SMark.J.Nelson@Sun.COM * You may not use this file except in compliance with the License. 70Sstevel@tonic-gate * 80Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 90Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 100Sstevel@tonic-gate * See the License for the specific language governing permissions 110Sstevel@tonic-gate * and limitations under the License. 120Sstevel@tonic-gate * 130Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 140Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 150Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 160Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 170Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 180Sstevel@tonic-gate * 190Sstevel@tonic-gate * CDDL HEADER END 200Sstevel@tonic-gate */ 210Sstevel@tonic-gate /* 220Sstevel@tonic-gate * Copyright (c) 1999 by Sun Microsystems, Inc. 230Sstevel@tonic-gate * All rights reserved. 240Sstevel@tonic-gate * 250Sstevel@tonic-gate */ 260Sstevel@tonic-gate 270Sstevel@tonic-gate // ServiceStore.java: Interface for different storage implementations 280Sstevel@tonic-gate // Author: James Kempf 290Sstevel@tonic-gate // Created On: Thu Oct 16 07:46:45 1997 300Sstevel@tonic-gate // Last Modified By: James Kempf 310Sstevel@tonic-gate // Last Modified On: Wed Feb 17 09:28:53 1999 320Sstevel@tonic-gate // Update Count: 91 330Sstevel@tonic-gate // 340Sstevel@tonic-gate 350Sstevel@tonic-gate package com.sun.slp; 360Sstevel@tonic-gate 370Sstevel@tonic-gate import java.util.*; 380Sstevel@tonic-gate import java.io.*; 390Sstevel@tonic-gate 400Sstevel@tonic-gate /** 410Sstevel@tonic-gate * ServiceStore specifies the interface between the storage back end for 420Sstevel@tonic-gate * the SLP DA/slpd and the communications front end. There can be 430Sstevel@tonic-gate * various implementations of the ServiceStore. The ServiceStoreFactory 440Sstevel@tonic-gate * class is responsible for instantiating the ServiceStore object. 450Sstevel@tonic-gate * Each ServiceStore implementation must also supply ServiceRecord 460Sstevel@tonic-gate * objects. 470Sstevel@tonic-gate * 480Sstevel@tonic-gate * @author James Kempf 490Sstevel@tonic-gate */ 500Sstevel@tonic-gate 510Sstevel@tonic-gate interface ServiceStore { 520Sstevel@tonic-gate 530Sstevel@tonic-gate /** 540Sstevel@tonic-gate * Key for fetching attribute values from findAttributes() returned 550Sstevel@tonic-gate * hashtable. 560Sstevel@tonic-gate */ 570Sstevel@tonic-gate 580Sstevel@tonic-gate final static String FA_ATTRIBUTES = "FA_ATTRIBUTES"; 590Sstevel@tonic-gate 600Sstevel@tonic-gate /** 610Sstevel@tonic-gate * Key for fetching attribute auth block from findAttributes() returned 620Sstevel@tonic-gate * hashtable. 630Sstevel@tonic-gate */ 640Sstevel@tonic-gate 650Sstevel@tonic-gate final static String FA_SIG = "FA_SIG"; 660Sstevel@tonic-gate 670Sstevel@tonic-gate /** 680Sstevel@tonic-gate * Key for fetching hashtable of service URLs v.s. scopes values from 690Sstevel@tonic-gate * findServices() returned hashtable. 700Sstevel@tonic-gate */ 710Sstevel@tonic-gate 720Sstevel@tonic-gate final static String FS_SERVICES = "FS_SERVICES"; 730Sstevel@tonic-gate 740Sstevel@tonic-gate /** 750Sstevel@tonic-gate * Key for fetching hashtable of service URLs v.s. signatures from 760Sstevel@tonic-gate * findServices() returned hashtable. 770Sstevel@tonic-gate */ 780Sstevel@tonic-gate 790Sstevel@tonic-gate final static String FS_SIGTABLE = "FS_SIGTABLE"; 800Sstevel@tonic-gate 810Sstevel@tonic-gate /** 820Sstevel@tonic-gate * The ServiceRecord interface specifies the record structure of 830Sstevel@tonic-gate * stored in the ServiceStore. The methods are all property 840Sstevel@tonic-gate * accessors. 850Sstevel@tonic-gate * 860Sstevel@tonic-gate * @author James Kempf 870Sstevel@tonic-gate */ 880Sstevel@tonic-gate 890Sstevel@tonic-gate interface ServiceRecord { 900Sstevel@tonic-gate 910Sstevel@tonic-gate /** 920Sstevel@tonic-gate * Return the ServiceURL for the record. 930Sstevel@tonic-gate * 940Sstevel@tonic-gate * @return The record's service URL. 950Sstevel@tonic-gate */ 960Sstevel@tonic-gate getServiceURL()970Sstevel@tonic-gate ServiceURL getServiceURL(); 980Sstevel@tonic-gate 990Sstevel@tonic-gate /** 1000Sstevel@tonic-gate * Return the Vector of ServiceLocationAttribute objects for the record 1010Sstevel@tonic-gate * 1020Sstevel@tonic-gate * @return Vector of ServiceLocationAttribute objects for the record. 1030Sstevel@tonic-gate */ 1040Sstevel@tonic-gate getAttrList()1050Sstevel@tonic-gate Vector getAttrList(); 1060Sstevel@tonic-gate 1070Sstevel@tonic-gate /** 1080Sstevel@tonic-gate * Return the locale in which this record is registered. 1090Sstevel@tonic-gate * 1100Sstevel@tonic-gate * @return The language locale in which this record is registered. 1110Sstevel@tonic-gate */ 1120Sstevel@tonic-gate getLocale()1130Sstevel@tonic-gate Locale getLocale(); 1140Sstevel@tonic-gate 1150Sstevel@tonic-gate /** 1160Sstevel@tonic-gate * Return the Vector of scopes in which this record is registered. 1170Sstevel@tonic-gate * 1180Sstevel@tonic-gate * @return The Vector of scopes in which this record is registered. 1190Sstevel@tonic-gate */ 1200Sstevel@tonic-gate getScopes()1210Sstevel@tonic-gate Vector getScopes(); 1220Sstevel@tonic-gate 1230Sstevel@tonic-gate /** 1240Sstevel@tonic-gate * Return the expiration time for the record. This informs the 1250Sstevel@tonic-gate * service store when the record should expire and be removed 1260Sstevel@tonic-gate * from the table. 1270Sstevel@tonic-gate * 1280Sstevel@tonic-gate * @return The expiration time for the record. 1290Sstevel@tonic-gate */ 1300Sstevel@tonic-gate getExpirationTime()1310Sstevel@tonic-gate long getExpirationTime(); 1320Sstevel@tonic-gate 1330Sstevel@tonic-gate /** 1340Sstevel@tonic-gate * Return the URL signature, or null if there's none. 1350Sstevel@tonic-gate * 1360Sstevel@tonic-gate * @return auth block Hashtable for URL signature. 1370Sstevel@tonic-gate */ 1380Sstevel@tonic-gate getURLSignature()1390Sstevel@tonic-gate Hashtable getURLSignature(); 1400Sstevel@tonic-gate 1410Sstevel@tonic-gate /** 1420Sstevel@tonic-gate * Return the attribute signature, or null if there's none. 1430Sstevel@tonic-gate * 1440Sstevel@tonic-gate * @return auth block Hashtable for attribute signature. 1450Sstevel@tonic-gate */ 1460Sstevel@tonic-gate getAttrSignature()1470Sstevel@tonic-gate Hashtable getAttrSignature(); 1480Sstevel@tonic-gate 1490Sstevel@tonic-gate } 1500Sstevel@tonic-gate 1510Sstevel@tonic-gate // 1520Sstevel@tonic-gate // ServiceStore interface methods. 1530Sstevel@tonic-gate // 1540Sstevel@tonic-gate 1550Sstevel@tonic-gate /** 1560Sstevel@tonic-gate * On first call, return the time since the last stateless reboot 1570Sstevel@tonic-gate * of the ServiceStore for a stateful store. Otherwise, return the 1580Sstevel@tonic-gate * current time. This is for DAs. 1590Sstevel@tonic-gate * 1600Sstevel@tonic-gate * @return A Long giving the time since the last stateless reboot, 1610Sstevel@tonic-gate * in NTP format. 1620Sstevel@tonic-gate */ 1630Sstevel@tonic-gate getStateTimestamp()1640Sstevel@tonic-gate long getStateTimestamp(); 1650Sstevel@tonic-gate 1660Sstevel@tonic-gate /** 1670Sstevel@tonic-gate * Age out all records whose time has expired. 1680Sstevel@tonic-gate * 1690Sstevel@tonic-gate * @param deleted A Vector for return of ServiceStore.Service records 1700Sstevel@tonic-gate * containing deleted services. 1710Sstevel@tonic-gate * @return The time interval until another table walk must be done, 1720Sstevel@tonic-gate * in milliseconds. 1730Sstevel@tonic-gate * 1740Sstevel@tonic-gate */ 1750Sstevel@tonic-gate ageOut(Vector deleted)1760Sstevel@tonic-gate long ageOut(Vector deleted); 1770Sstevel@tonic-gate 1780Sstevel@tonic-gate /** 1790Sstevel@tonic-gate * Create a new registration with the given parameters. 1800Sstevel@tonic-gate * 1810Sstevel@tonic-gate * @param url The ServiceURL. 1820Sstevel@tonic-gate * @param attrs The Vector of ServiceLocationAttribute objects. 1830Sstevel@tonic-gate * @param locale The Locale. 1840Sstevel@tonic-gate * @param scopes Vector of scopes in which this record is registered. 1850Sstevel@tonic-gate * @param urlSig Hashtable for URL signatures, or null if none. 1860Sstevel@tonic-gate * @param attrSig Hashtable for URL signatures, or null if none. 1870Sstevel@tonic-gate * @return True if there is an already existing registration which 1880Sstevel@tonic-gate * this one replaced. 1890Sstevel@tonic-gate * @exception ServiceLocationException Thrown if any 1900Sstevel@tonic-gate * error occurs during registration or if the table 1910Sstevel@tonic-gate * requires a network connection that failed. This 1920Sstevel@tonic-gate * includes timeout failures. 1930Sstevel@tonic-gate */ 1940Sstevel@tonic-gate register(ServiceURL url, Vector attrs, Vector scopes, Locale locale, Hashtable urlSig, Hashtable attrSig)1950Sstevel@tonic-gate boolean register(ServiceURL url, Vector attrs, 1960Sstevel@tonic-gate Vector scopes, Locale locale, 1970Sstevel@tonic-gate Hashtable urlSig, Hashtable attrSig) 1980Sstevel@tonic-gate throws ServiceLocationException; 1990Sstevel@tonic-gate 2000Sstevel@tonic-gate /** 2010Sstevel@tonic-gate * Deregister a ServiceURL from the database for every locale 2020Sstevel@tonic-gate * and every scope. There will be only one record for each URL 2030Sstevel@tonic-gate * and locale deregistered, regardless of the number of scopes in 2040Sstevel@tonic-gate * which the URL was registered, since the attributes will be the 2050Sstevel@tonic-gate * same in each scope if the locale is the same. 2060Sstevel@tonic-gate * 2070Sstevel@tonic-gate * @param url The ServiceURL 2080Sstevel@tonic-gate * @param scopes Vector of scopes. 2090Sstevel@tonic-gate * @param urlSig The URL signature, if any. 2100Sstevel@tonic-gate * @exception ServiceLocationException Thrown if the 2110Sstevel@tonic-gate * ServiceStore does not contain the URL, or if any 2120Sstevel@tonic-gate * error occurs during the operation, or if the table 2130Sstevel@tonic-gate * requires a network connection that failed. This 2140Sstevel@tonic-gate * includes timeout failures. 2150Sstevel@tonic-gate */ 2160Sstevel@tonic-gate deregister(ServiceURL url, Vector scopes, Hashtable urlSig)2170Sstevel@tonic-gate void deregister(ServiceURL url, Vector scopes, Hashtable urlSig) 2180Sstevel@tonic-gate throws ServiceLocationException; 2190Sstevel@tonic-gate 2200Sstevel@tonic-gate /** 2210Sstevel@tonic-gate * Update the service registration with the new parameters, adding 2220Sstevel@tonic-gate * attributes and updating the service URL's lifetime. 2230Sstevel@tonic-gate * 2240Sstevel@tonic-gate * @param url The ServiceURL. 2250Sstevel@tonic-gate * @param attrs The Vector of ServiceLocationAttribute objects. 2260Sstevel@tonic-gate * @param locale The Locale. 2270Sstevel@tonic-gate * @param scopes Vector of scopes in which this record is registered. 2280Sstevel@tonic-gate * @exception ServiceLocationException Thrown if any 2290Sstevel@tonic-gate * error occurs during registration or if the table 2300Sstevel@tonic-gate * requires a network connection that failed. This 2310Sstevel@tonic-gate * includes timeout failures. 2320Sstevel@tonic-gate */ 2330Sstevel@tonic-gate updateRegistration(ServiceURL url, Vector attrs, Vector scopes, Locale locale)2340Sstevel@tonic-gate void updateRegistration(ServiceURL url, Vector attrs, 2350Sstevel@tonic-gate Vector scopes, Locale locale) 2360Sstevel@tonic-gate throws ServiceLocationException; 2370Sstevel@tonic-gate 2380Sstevel@tonic-gate /** 2390Sstevel@tonic-gate * Delete the attributes from the ServiceURL object's table entries. 2400Sstevel@tonic-gate * Delete for every locale that has the attributes and every scope. 2410Sstevel@tonic-gate * Note that the attribute tags must be lower-cased in the locale of 2420Sstevel@tonic-gate * the registration, not in the locale of the request. 2430Sstevel@tonic-gate * 2440Sstevel@tonic-gate * @param url The ServiceURL. 2450Sstevel@tonic-gate * @param scopes Vector of scopes. 2460Sstevel@tonic-gate * @param attrTags The Vector of String 2470Sstevel@tonic-gate * objects specifying the attribute tags of 2480Sstevel@tonic-gate * the attributes to delete. 2490Sstevel@tonic-gate * @param locale Locale of the request. 2500Sstevel@tonic-gate * @exception ServiceLocationException Thrown if the 2510Sstevel@tonic-gate * ServiceStore does not contain the URL or if any 2520Sstevel@tonic-gate * error occurs during the operation or if the table 2530Sstevel@tonic-gate * requires a network connection that failed. This 2540Sstevel@tonic-gate * includes timeout failures. 2550Sstevel@tonic-gate */ 2560Sstevel@tonic-gate 2570Sstevel@tonic-gate void deleteAttributes(ServiceURL url, Vector scopes, Vector attrTags, Locale locale)2580Sstevel@tonic-gate deleteAttributes(ServiceURL url, 2590Sstevel@tonic-gate Vector scopes, 2600Sstevel@tonic-gate Vector attrTags, 2610Sstevel@tonic-gate Locale locale) 2620Sstevel@tonic-gate throws ServiceLocationException; 2630Sstevel@tonic-gate 2640Sstevel@tonic-gate /** 2650Sstevel@tonic-gate * Return a Vector of String containing the service types for this 2660Sstevel@tonic-gate * scope and naming authority. If there are none, an empty vector is 2670Sstevel@tonic-gate * returned. 2680Sstevel@tonic-gate * 2690Sstevel@tonic-gate * @param namingAuthority The namingAuthority, or "*" if for all. 2700Sstevel@tonic-gate * @param scopes The scope names. 2710Sstevel@tonic-gate * @return A Vector of String objects that are the type names, or 2720Sstevel@tonic-gate * an empty vector if there are none. 2730Sstevel@tonic-gate * @exception ServiceLocationException Thrown if any 2740Sstevel@tonic-gate * error occurs during the operation or if the table 2750Sstevel@tonic-gate * requires a network connection that failed. This 2760Sstevel@tonic-gate * includes timeout failures. 2770Sstevel@tonic-gate */ 2780Sstevel@tonic-gate findServiceTypes(String namingAuthority, Vector scopes)2790Sstevel@tonic-gate Vector findServiceTypes(String namingAuthority, Vector scopes) 2800Sstevel@tonic-gate throws ServiceLocationException; 2810Sstevel@tonic-gate 2820Sstevel@tonic-gate /** 2830Sstevel@tonic-gate * Return a Hashtable with the key FS_SERVICES matched to the 2840Sstevel@tonic-gate * hashtable of ServiceURL objects as key and a vector 2850Sstevel@tonic-gate * of their scopes as value, and the key FS_SIGTABLE 2860Sstevel@tonic-gate * matched to a hashtable with ServiceURL objects as key 2870Sstevel@tonic-gate * and the auth block Hashtable for the URL (if any) for value. The 2880Sstevel@tonic-gate * returned service URLs will match the service type, scope, query, 2890Sstevel@tonic-gate * and locale. If there are no signatures, the FS_SIGTABLE 2900Sstevel@tonic-gate * key returns null. If there are no 2910Sstevel@tonic-gate * registrations in any locale, FS_SERVICES is bound to an 2920Sstevel@tonic-gate * empty table. 2930Sstevel@tonic-gate * 2940Sstevel@tonic-gate * @param serviceType The service type name. 2950Sstevel@tonic-gate * @param scope The scope name. 2960Sstevel@tonic-gate * @param query The query, with any escaped characters as yet unprocessed. 2970Sstevel@tonic-gate * @param locale The locale in which to lowercase query and search. 2980Sstevel@tonic-gate * @return A Hashtable with the key FS_SERVICES matched to the 2990Sstevel@tonic-gate * hashtable of ServiceURL objects as key and a vector 3000Sstevel@tonic-gate * of their scopes as value, and the key FS_SIGTABLE 3010Sstevel@tonic-gate * matched to a hashtable with ServiceURL objects as key 3020Sstevel@tonic-gate * and the auth block Hashtable for the URL (if any) for value. 3030Sstevel@tonic-gate * If there are no registrations in any locale, FS_SERVICES 3040Sstevel@tonic-gate * is bound to an empty table. 3050Sstevel@tonic-gate * @exception ServiceLocationException Thrown if a parse error occurs 3060Sstevel@tonic-gate * during query parsing or if any 3070Sstevel@tonic-gate * error occurs during the operation or if the table 3080Sstevel@tonic-gate * requires a network connection that failed. This 3090Sstevel@tonic-gate * includes timeout failures. 3100Sstevel@tonic-gate */ 3110Sstevel@tonic-gate findServices(String serviceType, Vector scopes, String query, Locale locale)3120Sstevel@tonic-gate Hashtable findServices(String serviceType, 3130Sstevel@tonic-gate Vector scopes, 3140Sstevel@tonic-gate String query, 3150Sstevel@tonic-gate Locale locale) 3160Sstevel@tonic-gate throws ServiceLocationException; 3170Sstevel@tonic-gate 3180Sstevel@tonic-gate /** 3190Sstevel@tonic-gate * Return a Hashtable with key FA_ATTRIBUTES matched to the 3200Sstevel@tonic-gate * vector of ServiceLocationAttribute objects and key FA_SIG 3210Sstevel@tonic-gate * matched to the auth block Hashtable for the attributes (if any) 3220Sstevel@tonic-gate * The attribute objects will have tags matching the tags in 3230Sstevel@tonic-gate * the input parameter vector. If there are no registrations in any locale, 3240Sstevel@tonic-gate * FA_ATTRIBUTES is an empty vector. 3250Sstevel@tonic-gate * 3260Sstevel@tonic-gate * @param url The ServiceURL for which the records should be returned. 3270Sstevel@tonic-gate * @param scopes The scope names for which to search. 3280Sstevel@tonic-gate * @param attrTags The Vector of String 3290Sstevel@tonic-gate * objects containing the attribute tags. 3300Sstevel@tonic-gate * @param locale The locale in which to lower case tags and search. 3310Sstevel@tonic-gate * @return A Hashtable with a vector of ServiceLocationAttribute objects 3320Sstevel@tonic-gate * as the key and the auth block Hashtable for the attributes 3330Sstevel@tonic-gate * (if any) as the value. 3340Sstevel@tonic-gate * If there are no registrations in any locale, FA_ATTRIBUTES 3350Sstevel@tonic-gate * is an empty vector. 3360Sstevel@tonic-gate * @exception ServiceLocationException Thrown if any 3370Sstevel@tonic-gate * error occurs during the operation or if the table 3380Sstevel@tonic-gate * requires a network connection that failed. This 3390Sstevel@tonic-gate * includes timeout failures. An error should be 3400Sstevel@tonic-gate * thrown if the tag vector is for a partial request 3410Sstevel@tonic-gate * and any of the scopes are protected. 3420Sstevel@tonic-gate */ 3430Sstevel@tonic-gate findAttributes(ServiceURL url, Vector scopes, Vector attrTags, Locale locale)3440Sstevel@tonic-gate Hashtable findAttributes(ServiceURL url, 3450Sstevel@tonic-gate Vector scopes, 3460Sstevel@tonic-gate Vector attrTags, 3470Sstevel@tonic-gate Locale locale) 3480Sstevel@tonic-gate throws ServiceLocationException; 3490Sstevel@tonic-gate 3500Sstevel@tonic-gate /** 3510Sstevel@tonic-gate * Return a Vector of ServiceLocationAttribute objects with attribute tags 3520Sstevel@tonic-gate * matching the tags in the input parameter vector for all service URL's 3530Sstevel@tonic-gate * of the service type. If there are no registrations 3540Sstevel@tonic-gate * in any locale, an empty vector is returned. 3550Sstevel@tonic-gate * 3560Sstevel@tonic-gate * @param serviceType The service type name. 3570Sstevel@tonic-gate * @param scopes The scope names for which to search. 3580Sstevel@tonic-gate * @param attrTags The Vector of String 3590Sstevel@tonic-gate * objects containing the attribute tags. 3600Sstevel@tonic-gate * @param locale The locale in which to lower case tags. 3610Sstevel@tonic-gate * @return A Vector of ServiceLocationAttribute objects matching the query. 3620Sstevel@tonic-gate * If no match occurs but there are registrations 3630Sstevel@tonic-gate * in other locales, null is returned. If there are no registrations 3640Sstevel@tonic-gate * in any locale, an empty vector is returned. 3650Sstevel@tonic-gate * @exception ServiceLocationException Thrown if any 3660Sstevel@tonic-gate * error occurs during the operation or if the table 3670Sstevel@tonic-gate * requires a network connection that failed. This 3680Sstevel@tonic-gate * includes timeout failures. An error should also be 3690Sstevel@tonic-gate * signalled if any of the scopes are protected. 3700Sstevel@tonic-gate */ 3710Sstevel@tonic-gate findAttributes(String serviceType, Vector scopes, Vector attrTags, Locale locale)3720Sstevel@tonic-gate Vector findAttributes(String serviceType, 3730Sstevel@tonic-gate Vector scopes, 3740Sstevel@tonic-gate Vector attrTags, 3750Sstevel@tonic-gate Locale locale) 3760Sstevel@tonic-gate throws ServiceLocationException; 3770Sstevel@tonic-gate 3780Sstevel@tonic-gate /** 3790Sstevel@tonic-gate * Dump the service store to the log. 3800Sstevel@tonic-gate * 3810Sstevel@tonic-gate */ 3820Sstevel@tonic-gate dumpServiceStore()3830Sstevel@tonic-gate void dumpServiceStore(); 3840Sstevel@tonic-gate 3850Sstevel@tonic-gate /** 3860Sstevel@tonic-gate * Obtain the record matching the service URL and locale. 3870Sstevel@tonic-gate * 3880Sstevel@tonic-gate * @param URL The service record to match. 3890Sstevel@tonic-gate * @param locale The locale of the record. 3900Sstevel@tonic-gate * @return The ServiceRecord object, or null if none. 3910Sstevel@tonic-gate */ 3920Sstevel@tonic-gate 3930Sstevel@tonic-gate public ServiceRecord getServiceRecord(ServiceURL URL, Locale locale)3940Sstevel@tonic-gate getServiceRecord(ServiceURL URL, Locale locale); 3950Sstevel@tonic-gate 3960Sstevel@tonic-gate /** 3970Sstevel@tonic-gate * Obtains service records with scopes matching from vector scopes. 3980Sstevel@tonic-gate * If scopes is null, then returns all records. 3990Sstevel@tonic-gate * 4000Sstevel@tonic-gate * @param scopes Vector of scopes to match. 4010Sstevel@tonic-gate * @return Enumeration Of ServiceRecord Objects. 4020Sstevel@tonic-gate */ 4030Sstevel@tonic-gate getServiceRecordsByScope(Vector scopes)4040Sstevel@tonic-gate Enumeration getServiceRecordsByScope(Vector scopes); 4050Sstevel@tonic-gate 4060Sstevel@tonic-gate } 407