first commit
This commit is contained in:
@@ -0,0 +1,187 @@
|
||||
package domain
|
||||
|
||||
import "time"
|
||||
|
||||
type ArtifactTransferDirection string
|
||||
|
||||
const (
|
||||
ArtifactTransferDirectionUpload ArtifactTransferDirection = "upload"
|
||||
)
|
||||
|
||||
type ArtifactTransferOpen struct {
|
||||
RunEndpointID string
|
||||
SessionToken string
|
||||
ArtifactID string
|
||||
Direction ArtifactTransferDirection
|
||||
OwnerKind ArtifactOwnerKind
|
||||
OwnerID string
|
||||
SizeBytes int64
|
||||
ChunkSizeBytes int
|
||||
Checksum string
|
||||
IdempotencyKey string
|
||||
}
|
||||
|
||||
type ArtifactTransferOpenResult struct {
|
||||
Accepted bool
|
||||
TransferID string
|
||||
Direction ArtifactTransferDirection
|
||||
Artifact Artifact
|
||||
TotalChunks int
|
||||
ChunkSizeBytes int
|
||||
ReceivedChunkIndexes []int
|
||||
NextMissingChunkIndex int
|
||||
Completed bool
|
||||
Duplicate bool
|
||||
ServerTime time.Time
|
||||
}
|
||||
|
||||
type ArtifactChunkUpload struct {
|
||||
RunEndpointID string
|
||||
SessionToken string
|
||||
TransferID string
|
||||
ArtifactID string
|
||||
ChunkIndex int
|
||||
Offset int64
|
||||
SizeBytes int
|
||||
Checksum string
|
||||
Payload []byte
|
||||
}
|
||||
|
||||
type ArtifactChunkUploadResult struct {
|
||||
Accepted bool
|
||||
TransferID string
|
||||
ArtifactID string
|
||||
ChunkIndex int
|
||||
ReceivedChunkIndexes []int
|
||||
NextMissingChunkIndex int
|
||||
Duplicate bool
|
||||
ServerTime time.Time
|
||||
}
|
||||
|
||||
type ArtifactTransferStatusQuery struct {
|
||||
RunEndpointID string
|
||||
SessionToken string
|
||||
TransferID string
|
||||
ArtifactID string
|
||||
}
|
||||
|
||||
type ArtifactTransferStatusResult struct {
|
||||
Accepted bool
|
||||
TransferID string
|
||||
ArtifactID string
|
||||
Direction ArtifactTransferDirection
|
||||
TotalChunks int
|
||||
ChunkSizeBytes int
|
||||
ReceivedChunkIndexes []int
|
||||
NextMissingChunkIndex int
|
||||
Completed bool
|
||||
ServerTime time.Time
|
||||
}
|
||||
|
||||
type ArtifactTransferComplete struct {
|
||||
RunEndpointID string
|
||||
SessionToken string
|
||||
TransferID string
|
||||
ArtifactID string
|
||||
Checksum string
|
||||
SizeBytes int64
|
||||
}
|
||||
|
||||
type ArtifactTransferCompleteResult struct {
|
||||
Accepted bool
|
||||
TransferID string
|
||||
Artifact Artifact
|
||||
Completed bool
|
||||
ServerTime time.Time
|
||||
}
|
||||
|
||||
type ArtifactChunkRecord struct {
|
||||
ChunkIndex int
|
||||
Offset int64
|
||||
SizeBytes int
|
||||
Checksum string
|
||||
Payload []byte
|
||||
ReceivedAt time.Time
|
||||
}
|
||||
|
||||
type ArtifactTransferSession struct {
|
||||
TransferID string
|
||||
RunEndpointID string
|
||||
ArtifactID string
|
||||
Direction ArtifactTransferDirection
|
||||
OwnerKind ArtifactOwnerKind
|
||||
OwnerID string
|
||||
SizeBytes int64
|
||||
ChunkSizeBytes int
|
||||
Checksum string
|
||||
IdempotencyKey string
|
||||
TotalChunks int
|
||||
ReceivedChunks map[int]ArtifactChunkRecord
|
||||
Completed bool
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
}
|
||||
|
||||
func CopyArtifactTransferOpen(open ArtifactTransferOpen) ArtifactTransferOpen {
|
||||
return open
|
||||
}
|
||||
|
||||
func CopyArtifactChunkUpload(chunk ArtifactChunkUpload) ArtifactChunkUpload {
|
||||
chunk.Payload = CopyBytes(chunk.Payload)
|
||||
return chunk
|
||||
}
|
||||
|
||||
func CopyArtifactTransferOpenResult(result ArtifactTransferOpenResult) ArtifactTransferOpenResult {
|
||||
result.Artifact = CopyArtifact(result.Artifact)
|
||||
result.ReceivedChunkIndexes = CopyIntSlice(result.ReceivedChunkIndexes)
|
||||
return result
|
||||
}
|
||||
|
||||
func CopyArtifactChunkUploadResult(result ArtifactChunkUploadResult) ArtifactChunkUploadResult {
|
||||
result.ReceivedChunkIndexes = CopyIntSlice(result.ReceivedChunkIndexes)
|
||||
return result
|
||||
}
|
||||
|
||||
func CopyArtifactTransferStatusResult(result ArtifactTransferStatusResult) ArtifactTransferStatusResult {
|
||||
result.ReceivedChunkIndexes = CopyIntSlice(result.ReceivedChunkIndexes)
|
||||
return result
|
||||
}
|
||||
|
||||
func CopyArtifactTransferCompleteResult(result ArtifactTransferCompleteResult) ArtifactTransferCompleteResult {
|
||||
result.Artifact = CopyArtifact(result.Artifact)
|
||||
return result
|
||||
}
|
||||
|
||||
func CopyArtifactChunkRecord(record ArtifactChunkRecord) ArtifactChunkRecord {
|
||||
record.Payload = CopyBytes(record.Payload)
|
||||
return record
|
||||
}
|
||||
|
||||
func CopyArtifactTransferSession(session ArtifactTransferSession) ArtifactTransferSession {
|
||||
if session.ReceivedChunks != nil {
|
||||
chunks := make(map[int]ArtifactChunkRecord, len(session.ReceivedChunks))
|
||||
for index, record := range session.ReceivedChunks {
|
||||
chunks[index] = CopyArtifactChunkRecord(record)
|
||||
}
|
||||
session.ReceivedChunks = chunks
|
||||
}
|
||||
return session
|
||||
}
|
||||
|
||||
func CopyBytes(values []byte) []byte {
|
||||
if values == nil {
|
||||
return nil
|
||||
}
|
||||
out := make([]byte, len(values))
|
||||
copy(out, values)
|
||||
return out
|
||||
}
|
||||
|
||||
func CopyIntSlice(values []int) []int {
|
||||
if values == nil {
|
||||
return nil
|
||||
}
|
||||
out := make([]int, len(values))
|
||||
copy(out, values)
|
||||
return out
|
||||
}
|
||||
Reference in New Issue
Block a user