Home | History | Annotate | Download | only in bytestreams
      1 /**
      2  * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
      3  * you may not use this file except in compliance with the License.
      4  * You may obtain a copy of the License at
      5  *
      6  *     http://www.apache.org/licenses/LICENSE-2.0
      7  *
      8  * Unless required by applicable law or agreed to in writing, software
      9  * distributed under the License is distributed on an "AS IS" BASIS,
     10  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     11  * See the License for the specific language governing permissions and
     12  * limitations under the License.
     13  */
     14 package org.jivesoftware.smackx.bytestreams;
     15 
     16 import org.jivesoftware.smack.XMPPException;
     17 import org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamRequest;
     18 import org.jivesoftware.smackx.bytestreams.socks5.Socks5BytestreamRequest;
     19 
     20 /**
     21  * BytestreamRequest provides an interface to handle incoming bytestream requests.
     22  * <p>
     23  * There are two implementations of the interface. See {@link Socks5BytestreamRequest} and
     24  * {@link InBandBytestreamRequest}.
     25  *
     26  * @author Henning Staib
     27  */
     28 public interface BytestreamRequest {
     29 
     30     /**
     31      * Returns the sender of the bytestream open request.
     32      *
     33      * @return the sender of the bytestream open request
     34      */
     35     public String getFrom();
     36 
     37     /**
     38      * Returns the session ID of the bytestream open request.
     39      *
     40      * @return the session ID of the bytestream open request
     41      */
     42     public String getSessionID();
     43 
     44     /**
     45      * Accepts the bytestream open request and returns the session to send/receive data.
     46      *
     47      * @return the session to send/receive data
     48      * @throws XMPPException if an error occurred while accepting the bytestream request
     49      * @throws InterruptedException if the thread was interrupted while waiting in a blocking
     50      *         operation
     51      */
     52     public BytestreamSession accept() throws XMPPException, InterruptedException;
     53 
     54     /**
     55      * Rejects the bytestream request by sending a reject error to the initiator.
     56      */
     57     public void reject();
     58 
     59 }
     60