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 }