View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership. The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License. You may obtain a copy of the License at
9    * 
10   *      http://www.apache.org/licenses/LICENSE-2.0
11   * 
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  package org.apache.river.outrigger.proxy;
19  
20  import java.io.IOException;
21  import net.jini.id.Uuid;
22  import org.apache.river.api.io.AtomicSerial;
23  import org.apache.river.api.io.AtomicSerial.GetArg;
24  
25  /**
26   * Simple struct to hold the <code>Uuid</code> for a new
27   * <code>MatchSet</code> instance and the first batch of
28   * data. Also holds initial lease time.
29   */
30  @AtomicSerial
31  public class MatchSetData implements java.io.Serializable {
32      private static final long serialVersionUID = 1L;
33  
34      /**
35       * <code>Uuid</code> for iteration and associated lease. 
36       * <code>null</code> if the entire iteration is in 
37       * <code>reps</code>.
38       */
39      final Uuid uuid;
40  
41      /** Intial set of entries */
42      final EntryRep[] reps;
43  
44      /** 
45       * Initial lease time. Negative if the entire iteration is in
46       * <code>reps</code>.
47       */
48      final long intialLeaseDuration;
49  
50      /**
51       * Creates a new MatchSetData instance.
52       * @param uuid value of <code>uuid</code> field.
53       * @param reps value of <code>reps</code> field.
54       * @param intialLeaseDuration value of <code>intialLeaseDuration</code> 
55       *        field.
56       */
57      public MatchSetData(Uuid uuid, EntryRep[] reps, long intialLeaseDuration) {
58  	this.uuid = uuid;
59  	this.reps = reps;
60  	this.intialLeaseDuration = intialLeaseDuration;
61      }
62      
63      MatchSetData(GetArg arg) throws IOException {
64  	this((Uuid) arg.get("uuid", null),
65  		((EntryRep[]) arg.get("reps", null)).clone(), // Throws NPE, should it?
66  		arg.get("intialLeaseDuration", 0L) );
67  }
68  }