public class WARCWriter extends WriterPoolMember implements WARCConstants
Assumption is that the caller is managing access to this WARCWriter ensuring only one thread accessing this WARC instance at any one time.
While being written, WARCs have a '.open' suffix appended.
WARCConstants.WARCRecordType| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
CONTENT_BYTES |
static byte[] |
CRLF_BYTES
NEWLINE as bytes.
|
static java.lang.String |
NUM_RECORDS |
static java.lang.String |
SIZE_ON_DISK |
static java.lang.String |
TOTAL_BYTES |
static java.lang.String |
TOTALS |
countOut, currentBasename, currentTimestamp, DEFAULT_PREFIX, DEFAULT_TEMPLATE, f, out, roundRobinIndex, scratchbuffer, serialNoFormatter, settings, UTF8COLON_SPACE, COMPRESSED_WARC_FILE_EXTENSION, CONTENT_DESCRIPTION, CONTENT_LENGTH, CONTENT_TYPE, DEFAULT_ENCODING, DEFAULT_MAX_WARC_FILE_SIZE, DOT_COMPRESSED_WARC_FILE_EXTENSION, DOT_WARC_FILE_EXTENSION, FTP_CONTROL_CONVERSATION_MIMETYPE, HEADER_FIELD_SEPARATOR, HEADER_KEY_BLOCK_DIGEST, HEADER_KEY_CONCURRENT_TO, HEADER_KEY_DATE, HEADER_KEY_ETAG, HEADER_KEY_FILENAME, HEADER_KEY_ID, HEADER_KEY_IP, HEADER_KEY_LAST_MODIFIED, HEADER_KEY_PAYLOAD_DIGEST, HEADER_KEY_PROFILE, HEADER_KEY_REFERS_TO, HEADER_KEY_REFERS_TO_DATE, HEADER_KEY_REFERS_TO_FILE_OFFSET, HEADER_KEY_REFERS_TO_FILENAME, HEADER_KEY_REFERS_TO_TARGET_URI, HEADER_KEY_TRUNCATED, HEADER_KEY_TYPE, HEADER_KEY_URI, HEADER_LINE_ENCODING, HTTP_REQUEST_MIMETYPE, HTTP_RESPONSE_MIMETYPE, HTTP_RESPONSE_MIMETYPE_NS, MAX_LINE_LENGTH, MAX_WARC_HEADER_LINE_LENGTH, NAMED_FIELD_CHECKSUM_LABEL, NAMED_FIELD_DESCRIPTION, NAMED_FIELD_FILEDESC, NAMED_FIELD_IP_LABEL, NAMED_FIELD_RELATED_LABEL, NAMED_FIELD_TRUNCATED, NAMED_FIELD_TRUNCATED_VALUE_HEAD, NAMED_FIELD_TRUNCATED_VALUE_LENGTH, NAMED_FIELD_TRUNCATED_VALUE_TIME, NAMED_FIELD_TRUNCATED_VALUE_UNSPECIFIED, NAMED_FIELD_WARCFILENAME, PLACEHOLDER_RECORD_LENGTH_STRING, PROFILE_REVISIT_IDENTICAL_DIGEST, PROFILE_REVISIT_NOT_MODIFIED, TRUNCATED_VALUE_UNSPECIFIED, TYPE, WARC_FIELDS_TYPE, WARC_FILE_EXTENSION, WARC_HEADER_ENCODING, WARC_ID, WARC_MAGIC, WARC_VERSION, WSPABSOLUTE_OFFSET_KEY, CDX, CDX_FILE, CDX_LINE_BUFFER_SIZE, CRLF, DATE_FIELD_KEY, DEFAULT_DIGEST_METHOD, DOT_COMPRESSED_FILE_EXTENSION, DUMP, GZIP_DUMP, HEADER, INVALID_SUFFIX, LENGTH_FIELD_KEY, MIMETYPE_FIELD_KEY, NOHEAD, OCCUPIED_SUFFIX, ORIGIN_FIELD_KEY, READER_IDENTIFIER_FIELD_KEY, RECORD_IDENTIFIER_FIELD_KEY, SINGLE_SPACE, TYPE_FIELD_KEY, URL_FIELD_KEY, VERSION_FIELD_KEY| Constructor and Description |
|---|
WARCWriter(java.util.concurrent.atomic.AtomicInteger serialNo,
java.io.OutputStream out,
java.io.File f,
WARCWriterPoolSettings settings)
Constructor.
|
WARCWriter(java.util.concurrent.atomic.AtomicInteger serialNo,
WARCWriterPoolSettings settings)
Constructor.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
baseCharacterCheck(char c,
java.lang.String parameter) |
protected java.lang.String |
checkHeaderLineMimetypeParameter(java.lang.String parameter) |
protected java.lang.String |
checkHeaderValue(java.lang.String value) |
protected java.lang.String |
createFile(java.io.File file) |
protected java.lang.String |
createRecordHeader(WARCRecordInfo metaRecord) |
protected java.net.URI |
generateRecordId(java.util.Map<java.lang.String,java.lang.String> qualifiers) |
protected java.net.URI |
generateRecordId(java.lang.String key,
java.lang.String value) |
java.lang.String |
getFilenameWithoutOccupiedSuffix() |
static long |
getStat(java.util.concurrent.ConcurrentMap<java.lang.String,java.util.concurrent.ConcurrentMap<java.lang.String,java.util.concurrent.atomic.AtomicLong>> map,
java.lang.String key,
java.lang.String subkey) |
static long |
getStat(java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Long>> map,
java.lang.String key,
java.lang.String subkey) |
java.lang.Iterable<WARCRecordInfo> |
getTmpRecordLog() |
java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Long>> |
getTmpStats() |
void |
resetTmpRecordLog() |
void |
resetTmpStats() |
protected void |
subtally(java.util.Map<java.lang.String,java.lang.Long> substats,
long contentBytes,
long totalBytes,
long sizeOnDisk) |
protected void |
tally(WARCConstants.WARCRecordType warcRecordType,
long contentBytes,
long totalBytes,
long sizeOnDisk) |
void |
writeRecord(WARCRecordInfo recordInfo) |
java.net.URI |
writeWarcinfoRecord(java.lang.String filename) |
java.net.URI |
writeWarcinfoRecord(java.lang.String filename,
java.lang.String description) |
checkSize, checkWriteable, close, copyFrom, createFile, flush, generateNewBasename, getBaseFilename, getFile, getNextDirectory, getOutputStream, getPosition, isCompressed, isOversize, postWriteRecordTasks, preWriteRecordTasks, write, write, writepublic static final java.lang.String TOTALS
public static final java.lang.String SIZE_ON_DISK
public static final java.lang.String TOTAL_BYTES
public static final java.lang.String CONTENT_BYTES
public static final java.lang.String NUM_RECORDS
public static byte[] CRLF_BYTES
public WARCWriter(java.util.concurrent.atomic.AtomicInteger serialNo,
java.io.OutputStream out,
java.io.File f,
WARCWriterPoolSettings settings)
throws java.io.IOException
serialNo - used to generate unique file name sequencesout - Where to write.f - File the out is connected to.cmprs - Compress the content written.a14DigitDate - If null, we'll write current time.java.io.IOExceptionpublic WARCWriter(java.util.concurrent.atomic.AtomicInteger serialNo,
WARCWriterPoolSettings settings)
dirs - Where to drop files.prefix - File prefix to use.cmprs - Compress the records written.maxSize - Maximum size for ARC files written.suffix - File tail to use. If null, unused.warcinfoData - File metadata for warcinfo record.protected java.lang.String createFile(java.io.File file)
throws java.io.IOException
createFile in class WriterPoolMemberjava.io.IOExceptionprotected void baseCharacterCheck(char c,
java.lang.String parameter)
throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentExceptionprotected java.lang.String checkHeaderValue(java.lang.String value)
throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentExceptionprotected java.lang.String checkHeaderLineMimetypeParameter(java.lang.String parameter)
throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentExceptionprotected java.lang.String createRecordHeader(WARCRecordInfo metaRecord) throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentExceptionpublic void writeRecord(WARCRecordInfo recordInfo) throws java.io.IOException
java.io.IOExceptionpublic java.lang.String getFilenameWithoutOccupiedSuffix()
protected void tally(WARCConstants.WARCRecordType warcRecordType, long contentBytes, long totalBytes, long sizeOnDisk)
protected void subtally(java.util.Map<java.lang.String,java.lang.Long> substats,
long contentBytes,
long totalBytes,
long sizeOnDisk)
protected java.net.URI generateRecordId(java.util.Map<java.lang.String,java.lang.String> qualifiers)
throws java.io.IOException
java.io.IOExceptionprotected java.net.URI generateRecordId(java.lang.String key,
java.lang.String value)
throws java.io.IOException
java.io.IOExceptionpublic java.net.URI writeWarcinfoRecord(java.lang.String filename)
throws java.io.IOException
java.io.IOExceptionpublic java.net.URI writeWarcinfoRecord(java.lang.String filename,
java.lang.String description)
throws java.io.IOException
java.io.IOExceptionpublic void resetTmpStats()
for usage modelpublic java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Long>> getTmpStats()
public static long getStat(java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Long>> map,
java.lang.String key,
java.lang.String subkey)
public static long getStat(java.util.concurrent.ConcurrentMap<java.lang.String,java.util.concurrent.ConcurrentMap<java.lang.String,java.util.concurrent.atomic.AtomicLong>> map,
java.lang.String key,
java.lang.String subkey)
public void resetTmpRecordLog()
public java.lang.Iterable<WARCRecordInfo> getTmpRecordLog()
Copyright © 2019 The International Internet Preservation Consortium. All Rights Reserved.