Overview
Comment: | Extracted predictor's compressor and decompressor code into separate structs that embed Sized{Writer,Reader} |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
50507bd510ea785ba85b12897d7c3be0 |
User & Date: | spaskalev on 2014-12-25 00:43:31 |
Other Links: | manifest | tags |
Context
2014-12-25
| ||
00:55 | Predictor's compressor and decompressor structures now implement io.Writer/io.Reader in order to deal away with function indirection but they do not follow the required semantics. Those are provided by the SizedWriter/SizedReader wrappers returned by the constructor functions. check-in: 4dfcff962c user: spaskalev tags: trunk | |
00:43 | Extracted predictor's compressor and decompressor code into separate structs that embed Sized{Writer,Reader} check-in: 50507bd510 user: spaskalev tags: trunk | |
00:26 | Extracted SizedWriter to a sizedWriter struct with a Write() method. check-in: 46da7a6ae9 user: spaskalev tags: trunk | |
Changes
Modified src/0dev.org/predictor/predictor.go from [43e7f751ed] to [cb877636af].
1 2 3 4 5 6 7 8 9 10 11 12 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | + + - + + + + + + + - - - + + + + + + | // Package predictor implements the predictor compression/decompression algorithm // as specified by RFC1978 - PPP Predictor Compression Protocol package predictor import ( bits "0dev.org/bits" iou "0dev.org/ioutil" "io" ) // The context struct contains the predictor's algorithm guess table // and the current value of its input/output hash type context struct { table [1 << 16]byte |
︙ | |||
56 57 58 59 60 61 62 | 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | - + - - - - - + + + + + + + + + + + + + + + - + - + - + | // Guess was wrong, output char ctx.table[ctx.hash] = current buf = append(buf, current) } ctx.update(current) } |
︙ | |||
141 142 143 144 145 146 147 | 162 163 164 165 166 167 168 169 | - | // Loop for another pass if there is available space in the output output = output[copied:] if len(output) > 0 && err == nil { goto readHeader } return total, err |