View Javadoc
1   //
2   // $Id: FileUploadThread.java 1026 2010-02-24 10:12:19Z etienne_sf $
3   //
4   // jupload - A file upload applet.
5   // Copyright 2007 The JUpload Team
6   //
7   // Created: ?
8   // Creator: William JinHua Kwong
9   // Last modified: $Date: 2010-02-24 11:12:19 +0100 (mer., 24 févr. 2010) $
10  //
11  // This program is free software; you can redistribute it and/or modify it under
12  // the terms of the GNU General Public License as published by the Free Software
13  // Foundation; either version 2 of the License, or (at your option) any later
14  // version. This program is distributed in the hope that it will be useful, but
15  // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16  // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
17  // details. You should have received a copy of the GNU General Public License
18  // along with this program; if not, write to the Free Software Foundation, Inc.,
19  // 675 Mass Ave, Cambridge, MA 02139, USA.
20  
21  package wjhk.jupload2.upload;
22  
23  import java.util.concurrent.BlockingQueue;
24  
25  import wjhk.jupload2.exception.JUploadException;
26  import wjhk.jupload2.policies.UploadPolicy;
27  
28  /**
29   * This interface defines the methods of the various FileUploadThread classes.
30   * The default implementation is in the {@link DefaultFileUploadThread}. It
31   * allows retries, for network errors. See
32   * {@link UploadPolicy#PROP_RETRY_MAX_NUMBER_OF} and
33   * {@link UploadPolicy#PROP_RETRY_NB_SECONDS_BETWEEN} for details.
34   */
35  public interface FileUploadThread {
36      /**
37       * @return the packetQueue
38       */
39      public BlockingQueue<UploadFilePacket> getPacketQueue();
40  
41      /**
42       * Get the server response message. In HTTP mode, it's the body part,
43       * without the HTTP headers.<BR>
44       * Note: was getResponseMsg until release 3.4.1.
45       * 
46       * @return The String that contains the HTTP response message (e.g.
47       *         "SUCCESS")
48       */
49      public String getResponseMsg();
50  
51      /**
52       * Closes the connection to the server and releases resources.
53       */
54      public void close();
55  
56      /**
57       * @return The Thread state
58       * @see Thread#getState()
59       */
60      public Thread.State getState();
61  
62      /**
63       * This method is created in this interface, and is implemented by
64       * {@link DefaultFileUploadThread}, as this class is a subclass of
65       * {@link Thread}.
66       * 
67       * @return true if the thread is currently working.
68       * @see java.lang.Thread#isAlive()
69       */
70      public boolean isAlive();
71  
72      /**
73       * This method is created in this interface, and is implemented by
74       * {@link DefaultFileUploadThread}, as this class is a subclass of
75       * {@link Thread}.
76       * 
77       * @throws InterruptedException
78       * @see java.lang.Thread#join()
79       */
80      public void join() throws InterruptedException;
81  
82      /**
83       * This method is created in this interface, and is implemented by
84       * {@link DefaultFileUploadThread}, as this class is a subclass of
85       * {@link Thread}.
86       * 
87       * @param millisec
88       * @throws InterruptedException
89       * @see java.lang.Thread#join(long)
90       */
91      public void join(long millisec) throws InterruptedException;
92  
93      /**
94       * This method is created in this interface, and is implemented by
95       * {@link DefaultFileUploadThread}, as this class is a subclass of
96       * {@link Thread}.
97       * 
98       * @see java.lang.Thread#start()
99       */
100     public void start();
101 
102     /**
103      * This method is created in this interface, and is implemented by
104      * {@link DefaultFileUploadThread}, as this class is a subclass of
105      * {@link Thread}.
106      * 
107      * @see java.lang.Thread#interrupt()
108      */
109     public void interrupt();
110 
111     /**
112      * Changes the FileUploadManagerThread. The standard way is to give the
113      * FileUploadManagerThread to the constructor. This method is used by JUnit
114      * tests, to be able to control which FileUploadThread is created.
115      * 
116      * @param fileUploadManagerThread
117      * @throws JUploadException
118      * @see FileUploadManagerThread
119      */
120     void setFileUploadThreadManager(
121             FileUploadManagerThread fileUploadManagerThread)
122             throws JUploadException;
123 
124 }