package com.limegroup.gnutella.uploader;
import java.io.IOException;
import java.io.OutputStream;
import com.limegroup.gnutella.Assert;
import com.limegroup.gnutella.UploadManager;
import com.limegroup.gnutella.http.ConstantHTTPHeaderValue;
import com.limegroup.gnutella.http.HTTPHeaderName;
import com.limegroup.gnutella.http.HTTPUtils;
public class QueuedUploadState extends UploadState {
private final int POSITION;
public QueuedUploadState(int pos, HTTPUploader uploader) {
super(uploader);
this.POSITION = pos;
}
public void writeMessageHeaders(OutputStream ostream) throws IOException {
String str;
//if not queued, this should never be the state
Assert.that(POSITION!=-1);
str = "HTTP/1.1 503 Service Unavailable\r\n";
ostream.write(str.getBytes());
HTTPUtils.writeHeader(HTTPHeaderName.SERVER,
ConstantHTTPHeaderValue.SERVER_VALUE,ostream);
str = "X-Queue: position="+(POSITION+1)+
", pollMin="+(UploadManager.MIN_POLL_TIME/1000)+/*mS to S*/
", pollMax="+(UploadManager.MAX_POLL_TIME/1000)+/*mS to S*/"\r\n";
ostream.write(str.getBytes());
writeAlts(ostream);
writeRanges(ostream);
if (UPLOADER.isFirstReply())
HTTPUtils.writeFeatures(ostream);
// write X-Thex-URI header with root hash if we have already
// calculated the tigertree
if (FILE_DESC.getHashTree()!=null)
HTTPUtils.writeHeader(HTTPHeaderName.THEX_URI,
FILE_DESC.getHashTree(),
ostream);
str = "\r\n";
ostream.write(str.getBytes());
}
public void writeMessageBody(OutputStream ostream) throws IOException {
//this method should MUST NOT do anything.
}
public boolean getCloseConnection() {
return false;
}
}