View Javadoc

1   /**********************************************************************
2    * IncompleteIOException.java
3    * created on 07.03.2005 by netseeker
4    * $Source: /cvsroot/ejoe/EJOE/src/de/netseeker/ejoe/io/IncompleteIOException.java,v $
5    * $Date: 2006/11/05 16:31:15 $
6    * $Revision: 1.12 $
7    *
8    * ====================================================================
9    *
10   *  Copyright 2006 netseeker aka Michael Manske
11   *
12   *  Licensed under the Apache License, Version 2.0 (the "License");
13   *  you may not use this file except in compliance with the License.
14   *  You may obtain a copy of the License at
15   *
16   *      http://www.apache.org/licenses/LICENSE-2.0
17   *
18   *  Unless required by applicable law or agreed to in writing, software
19   *  distributed under the License is distributed on an "AS IS" BASIS,
20   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21   *  See the License for the specific language governing permissions and
22   *  limitations under the License.
23   * ====================================================================
24   *
25   * This file is part of the ejoe framework.
26   * For more information on the author, please see
27   * <http://www.manskes.de/>.
28   *
29   *********************************************************************/
30  package de.netseeker.ejoe.io;
31  
32  import java.io.IOException;
33  import java.nio.ByteBuffer;
34  
35  /***
36   * A special exception type which will be thrown when a incomplete non-blocking IO read or write operation occurs.
37   * 
38   * @author netseeker
39   * @since 0.3.3
40   */
41  public class IncompleteIOException extends IOException
42  {
43      private static final long    serialVersionUID = 1L;
44  
45      private transient ByteBuffer _buf;
46  
47      private int                  _selectionInterest;
48  
49      /***
50       * Creates a new IncompleteIOException and stores the given ByteBuffer for possible reuse
51       * 
52       * @param buf the ByteBuffer containing the partial read/not yet written data
53       */
54      public IncompleteIOException(ByteBuffer buf)
55      {
56          this._buf = buf;
57      }
58  
59      /***
60       * Creates a new IncompleteIOException and stores the given ByteBuffer for possible reuse. Additionally it stores
61       * the type of the operation which has thrown this Exception.
62       * 
63       * @param buf the ByteBuffer containing the partial read/not yet written data
64       * @param selectionInterest type of the io operation which has caused the exception, can be either
65       *            SelectionKey.OP_READ or SelectionKey.OP_WRITE
66       * @see java.nio.channels.SelectionKey
67       */
68      public IncompleteIOException(ByteBuffer buf, int selectionInterest)
69      {
70          setIOBuffer( buf );
71          this._selectionInterest = selectionInterest;
72      }
73  
74      /***
75       * Returns the contained ByteBuffer.
76       * 
77       * @return the internal ByteBuffer containing partial data, may be null
78       */
79      public ByteBuffer getIOBuffer()
80      {
81          return this._buf;
82      }
83  
84      /***
85       * Sets the internal ByteBuffer containing partial data, can be also null
86       * 
87       * @param buf The ByteBuffer to set.
88       */
89      public void setIOBuffer( ByteBuffer buf )
90      {
91          if ( buf == null && this._buf != null )
92          {
93              this._buf.clear();
94          }
95          this._buf = buf;
96      }
97  
98      /***
99       * Returns the type of this incomplete io exception, either incomplete write or incomplete read.
100      * 
101      * @return SelectionKey.OP_WRITE for incomplete write, SelectionKey.OP_READ for incomplete write
102      */
103     public int getSelectionInterest()
104     {
105         return this._selectionInterest;
106     }
107 
108     /***
109      * Sets the type of this incomplete io exception, either incomplete write or incomplete read.
110      * 
111      * @param interest SelectionKey.OP_WRITE for incomplete write, SelectionKey.OP_READ for incomplete write
112      */
113     public void setSelectionInterest( int interest )
114     {
115         this._selectionInterest = interest;
116     }
117 }