MCPcopy
hub / github.com/NVIDIA/aistore / Write

Method Write

dsort/extract/tar.go:108–140  ·  view source on GitHub ↗
(p []byte)

Source from the content-addressed store, hash-verified

106}
107
108func (rd *tarRecordDataReader) Write(p []byte) (int, error) {
109 // Write header
110 remainingMetadataSize := rd.metadataSize - rd.written
111 if remainingMetadataSize > 0 {
112 writeN := int64(len(p))
113 if writeN < remainingMetadataSize {
114 debug.Assert(int64(len(rd.metadataBuf))-rd.written >= writeN)
115 copy(rd.metadataBuf[rd.written:], p)
116 rd.written += writeN
117 return len(p), nil
118 }
119
120 debug.Assert(int64(len(rd.metadataBuf))-rd.written >= remainingMetadataSize)
121 copy(rd.metadataBuf[rd.written:], p[:remainingMetadataSize])
122 rd.written += remainingMetadataSize
123 p = p[remainingMetadataSize:]
124 var metadata tarFileHeader
125 if err := jsoniter.Unmarshal(rd.metadataBuf[:rd.metadataSize], &metadata); err != nil {
126 return int(remainingMetadataSize), err
127 }
128
129 header := metadata.toTarHeader(rd.size)
130 if err := rd.tarWriter.WriteHeader(header); err != nil {
131 return int(remainingMetadataSize), err
132 }
133 } else {
134 remainingMetadataSize = 0
135 }
136
137 n, err := rd.tarWriter.Write(p)
138 rd.written += int64(n)
139 return n + int(remainingMetadataSize), err
140}
141
142// ExtractShard reads the tarball f and extracts its metadata.
143func (t *tarExtractCreator) ExtractShard(lom *cluster.LOM, r cos.ReadReaderAt, extractor RecordExtractor,

Callers 12

ProxyStartSortHandlerFunction · 0.45
proxyListSortHandlerFunction · 0.45
proxyMetricsSortHandlerFunction · 0.45
listSortHandlerFunction · 0.45
metricsHandlerFunction · 0.45
CreateShardMethod · 0.45
CreateShardMethod · 0.45
printStackFunction · 0.45
addBufferToTarFunction · 0.45
addRndToZipFunction · 0.45
PrepareObjectsFunction · 0.45
copyRandWithHashFunction · 0.45

Calls 3

toTarHeaderMethod · 0.95
AssertFunction · 0.92
WriteHeaderMethod · 0.80

Tested by

no test coverage detected