(writer io.Writer, pack JudgeResultPackage)
| 76 | } |
| 77 | |
| 78 | func writeFileHeaderAndResult(writer io.Writer, pack JudgeResultPackage) error { |
| 79 | buf8 := make([]byte, 1) |
| 80 | buf16 := make([]byte, 2) |
| 81 | buf32 := make([]byte, 4) |
| 82 | |
| 83 | // magic |
| 84 | binary.BigEndian.PutUint16(buf16, constants.JudgeResultMagicCode) |
| 85 | if _, err := writer.Write(buf16); err != nil { |
| 86 | return errors.Errorf("write result file error: %s", err.Error()) |
| 87 | } |
| 88 | |
| 89 | // Version |
| 90 | buf8[0] = pack.Version |
| 91 | if _, err := writer.Write(buf8); err != nil { |
| 92 | return errors.Errorf("write result file error: %s", err.Error()) |
| 93 | } |
| 94 | |
| 95 | // CompressorType |
| 96 | buf8[0] = pack.CompressorType |
| 97 | if _, err := writer.Write(buf8); err != nil { |
| 98 | return errors.Errorf("write result file error: %s", err.Error()) |
| 99 | } |
| 100 | |
| 101 | // ResultSize |
| 102 | binary.BigEndian.PutUint32(buf32, pack.ResultSize) |
| 103 | if _, err := writer.Write(buf32); err != nil { |
| 104 | return errors.Errorf("write result file error: %s", err.Error()) |
| 105 | } |
| 106 | |
| 107 | // BodySize |
| 108 | binary.BigEndian.PutUint32(buf32, pack.BodySize) |
| 109 | if _, err := writer.Write(buf32); err != nil { |
| 110 | return errors.Errorf("write result file error: %s", err.Error()) |
| 111 | } |
| 112 | |
| 113 | // CertSize |
| 114 | binary.BigEndian.PutUint16(buf16, pack.CertSize) |
| 115 | if _, err := writer.Write(buf16); err != nil { |
| 116 | return errors.Errorf("write result file error: %s", err.Error()) |
| 117 | } |
| 118 | |
| 119 | // Certificate |
| 120 | if pack.CertSize > 0 { |
| 121 | if _, err := writer.Write(pack.Certificate); err != nil { |
| 122 | return errors.Errorf("write result file error: %s", err.Error()) |
| 123 | } |
| 124 | } |
| 125 | |
| 126 | return nil |
| 127 | } |
| 128 | |
| 129 | // PersistentJudgeResult 持久化评测记录 |
| 130 | func PersistentJudgeResult( |
no test coverage detected