This project has retired. For details please refer to its Attic page.
VertexIdData xref
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  
19  package org.apache.giraph.utils;
20  
21  import org.apache.giraph.conf.ImmutableClassesGiraphConfigurable;
22  import org.apache.hadoop.io.Writable;
23  import org.apache.hadoop.io.WritableComparable;
24  
25  import java.io.IOException;
26  
27  /**
28   * Stores vertex ids and data associated with a vertex
29   *
30   * @param <I> vertexId type parameter
31   * @param <T> vertexData type parameter
32   */
33  public interface VertexIdData<I extends WritableComparable, T>
34    extends ImmutableClassesGiraphConfigurable, Writable {
35    /**
36     * Create a new data object.
37     *
38     * @return Newly-created data object.
39     */
40    T createData();
41  
42    /**
43     * Write a data object to an {@link ExtendedDataOutput}.
44     *
45     * @param out  {@link ExtendedDataOutput}
46     * @param data Data object to write
47     * @throws IOException
48     */
49    void writeData(ExtendedDataOutput out, T data) throws IOException;
50  
51    /**
52     * Read a data object's fields from an {@link ExtendedDataInput}.
53     *
54     * @param in   {@link ExtendedDataInput}
55     * @param data Data object to fill in-place
56     * @throws IOException
57     */
58    void readData(ExtendedDataInput in, T data) throws IOException;
59  
60    /**
61     * Initialize the inner state. Must be called before {@code add()} is
62     * called.
63     */
64    void initialize();
65  
66    /**
67     * Initialize the inner state, with a known size. Must be called before
68     * {@code add()} is called.
69     *
70     * @param expectedSize Number of bytes to be expected
71     */
72    void initialize(int expectedSize);
73  
74    /**
75     * Add a vertex id and data pair to the collection.
76     *
77     * @param vertexId Vertex id
78     * @param data Data
79     */
80    void add(I vertexId, T data);
81  
82    /**
83     * Add a serialized vertex id and data.
84     *
85     * @param serializedId The bye array which holds the serialized id.
86     * @param idPos The end position of the serialized id in the byte array.
87     * @param data Data
88     */
89    void add(byte[] serializedId, int idPos, T data);
90  
91    /**
92     * Get the number of bytes used.
93     *
94     * @return Bytes used
95     */
96    int getSize();
97  
98    /**
99     * Get the size of this object in serialized form.
100    *
101    * @return The size (in bytes) of the serialized object
102    */
103   int getSerializedSize();
104 
105   /**
106    * Check if the list is empty.
107    *
108    * @return Whether the list is empty
109    */
110   boolean isEmpty();
111 
112   /**
113    * Clear the list.
114    */
115   void clear();
116 
117   /**
118    * Get an iterator over the pairs.
119    *
120    * @return Iterator
121    */
122   VertexIdDataIterator<I, T> getVertexIdDataIterator();
123 }