1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.apache.commons.id.uuid; 18 19 import org.apache.commons.id.uuid.state.Node; 20 21 /** 22 * <p>Class is responsible for managing the <code>Node</code>s identified for 23 * this system (JVM instance), as well as the state management for the 24 * <code>Node</code>s.</p> 25 * 26 * @author Commons-Id team 27 * @version $Revision: 480488 $ $Date: 2006-11-29 08:57:26 +0000 (Wed, 29 Nov 2006) $ 28 * 29 */ 30 public interface NodeManager { 31 32 /** 33 * <p>Returns the current node in use for uuid generation. Calls to this 34 * method also signal the NodeManagerImpl when to store uuid state information. 35 * </p> 36 * 37 * @return the current node in use for uuid generation. 38 */ 39 Node currentNode(); 40 41 /** 42 * <p>Returns the next available <code>Node</code> for uuid generation.</p> 43 * 44 * @return the next available <code>Node</code> for uuid generation. 45 */ 46 Node nextAvailableNode(); 47 48 /** 49 * <p>Locks a node for use by a generator.</p> 50 * 51 * @param node the Node to lock. 52 */ 53 void lockNode(Node node); 54 55 /** 56 * <p>Releases a node locked by a generator.</p> 57 * 58 * @param node the Node to release. 59 */ 60 void releaseNode(Node node); 61 }