parse browse/feed/chat headers on the uploader side

This commit is contained in:
Zlatin Balevsky
2020-09-18 14:59:58 +01:00
parent b729a89672
commit f6fdf9e33f
5 changed files with 42 additions and 1 deletions

View File

@ -3,4 +3,5 @@ package com.muwire.core.upload
class ContentRequest extends Request {
Range range
int have
boolean browse, feed, chat
}

View File

@ -137,4 +137,19 @@ class ContentUploader extends Uploader {
request.infoHash == other.request.infoHash &&
request.getDownloader() == other.request.getDownloader()
}
@Override
public boolean isBrowseEnabled() {
request.browse
}
@Override
public boolean isFeedEnabled() {
request.feed
}
@Override
public boolean isChatEnabled() {
request.chat
}
}

View File

@ -75,4 +75,19 @@ class HashListUploader extends Uploader {
HashListUploader other = (HashListUploader)o
infoHash == other.infoHash && request.downloader == other.request.downloader
}
@Override
public boolean isBrowseEnabled() {
return false;
}
@Override
public boolean isFeedEnabled() {
return false;
}
@Override
public boolean isChatEnabled() {
return false;
}
}

View File

@ -55,8 +55,14 @@ class Request {
def encoded = headers["X-Have"].trim()
have = DataUtil.decodeXHave(encoded).size()
}
boolean browse = headers.containsKey("Browse") && Boolean.parseBoolean(headers['Browse'])
boolean feed = headers.containsKey("Feed") && Boolean.parseBoolean(headers['Feed'])
boolean chat = headers.containsKey("Chat") && Boolean.parseBoolean(headers['Chat'])
new ContentRequest( infoHash : infoHash, range : new Range(start, end),
headers : headers, downloader : downloader, have : have)
headers : headers, downloader : downloader, have : have,
browse : browse, feed : feed, chat : chat)
}
static Request parseHashListRequest(InfoHash infoHash, InputStream is) throws IOException {

View File

@ -45,6 +45,10 @@ abstract class Uploader {
abstract long getTotalSize();
abstract boolean isBrowseEnabled();
abstract boolean isFeedEnabled();
abstract boolean isChatEnabled();
synchronized int speed() {
final long now = System.currentTimeMillis()
long interval = Math.max(1000, now - lastSpeedRead)