MCPcopy Index your code
hub / github.com/coder/coder / BytesToDataUpload

Function BytesToDataUpload

provisionersdk/proto/dataupload.go:122–159  ·  view source on GitHub ↗
(dataType DataUploadType, data []byte)

Source from the content-addressed store, hash-verified

120}
121
122func BytesToDataUpload(dataType DataUploadType, data []byte) (*DataUpload, []*ChunkPiece, error) {
123 if int64(len(data)) > MaxFileSize {
124 return nil, nil, xerrors.Errorf("data size %d exceeds maximum allowed %d", len(data), MaxFileSize)
125 }
126
127 fullHash := sha256.Sum256(data)
128 //nolint:gosec // not going over int32
129 size := int32(len(data))
130 // basically ceiling division to get the number of chunks required to
131 // hold the data, each chunk is ChunkSize bytes.
132 chunkCount := (size + ChunkSize - 1) / ChunkSize
133
134 req := &DataUpload{
135 DataHash: fullHash[:],
136 FileSize: int64(size),
137 Chunks: chunkCount,
138 UploadType: dataType,
139 }
140
141 chunks := make([]*ChunkPiece, 0, chunkCount)
142 for i := int32(0); i < chunkCount; i++ {
143 start := int64(i) * ChunkSize
144 end := start + ChunkSize
145 if end > int64(size) {
146 end = int64(size)
147 }
148 chunkData := data[start:end]
149
150 chunk := &ChunkPiece{
151 PieceIndex: i,
152 Data: chunkData,
153 FullDataHash: fullHash[:],
154 }
155 chunks = append(chunks, chunk)
156 }
157
158 return req, chunks, nil
159}

Callers 4

handleInitRequestMethod · 0.92
FuzzBytesToDataUploadFunction · 0.92
TestBytesToDataUploadFunction · 0.92

Calls 1

ErrorfMethod · 0.45

Tested by 3

FuzzBytesToDataUploadFunction · 0.74
TestBytesToDataUploadFunction · 0.74