Mercurial > hg4j
comparison src/org/tmatesoft/hg/internal/Patch.java @ 534:243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Mon, 04 Feb 2013 18:00:55 +0100 |
| parents | e6f72c9829a6 |
| children | 47dfa0ec7e35 |
comparison
equal
deleted
inserted
replaced
| 533:e6f72c9829a6 | 534:243202f1bda5 |
|---|---|
| 152 da.readBytes(src, 0, len); | 152 da.readBytes(src, 0, len); |
| 153 starts.add(s); | 153 starts.add(s); |
| 154 ends.add(e); | 154 ends.add(e); |
| 155 data.add(src); | 155 data.add(src); |
| 156 } | 156 } |
| 157 | 157 |
| 158 /** | |
| 159 * @return how many bytes the patch would take if written down using BundleFormat structure (start, end, length, data) | |
| 160 */ | |
| 161 public int serializedLength() { | |
| 162 int totalDataLen = 0; | |
| 163 for (byte[] d : data) { | |
| 164 totalDataLen += d.length; | |
| 165 } | |
| 166 int prefix = 3 * 4 * count(); // 3 integer fields per entry * sizeof(int) * number of entries | |
| 167 return prefix + totalDataLen; | |
| 168 } | |
| 169 | |
| 170 /*package-local*/ void serialize(DataSerializer out) throws IOException { | |
| 171 for (int i = 0, x = data.size(); i < x; i++) { | |
| 172 final int start = starts.get(i); | |
| 173 final int end = ends.get(i); | |
| 174 byte[] d = data.get(i); | |
| 175 out.writeInt(start, end, d.length); | |
| 176 out.write(d, 0, d.length); | |
| 177 } | |
| 178 } | |
| 179 | |
| 158 private void add(Patch p, int i) { | 180 private void add(Patch p, int i) { |
| 159 add(p.starts.get(i), p.ends.get(i), p.data.get(i)); | 181 add(p.starts.get(i), p.ends.get(i), p.data.get(i)); |
| 160 } | 182 } |
| 161 | 183 |
| 162 /*package-local*/ void add(int start, int end, byte[] d) { | 184 /*package-local*/ void add(int start, int end, byte[] d) { |
| 361 r.add(this, p1); | 383 r.add(this, p1); |
| 362 p1++; | 384 p1++; |
| 363 }; | 385 }; |
| 364 return r; | 386 return r; |
| 365 } | 387 } |
| 388 | |
| 389 public class PatchDataSource implements DataSerializer.DataSource { | |
| 390 | |
| 391 public void serialize(DataSerializer out) throws IOException { | |
| 392 Patch.this.serialize(out); | |
| 393 } | |
| 394 | |
| 395 public int serializeLength() { | |
| 396 return Patch.this.serializedLength(); | |
| 397 } | |
| 398 } | |
| 366 } | 399 } |
