PreRetrieve.java 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package protocols.precomputation;
  2. import communication.Communication;
  3. import oram.Forest;
  4. import oram.Metadata;
  5. import protocols.Protocol;
  6. import protocols.struct.Party;
  7. import protocols.struct.PreData;
  8. import util.Timer;
  9. public class PreRetrieve extends Protocol {
  10. public PreRetrieve(Communication con1, Communication con2) {
  11. super(con1, con2);
  12. }
  13. // TODO: not all protocols run on all trees (remove unnecessary precomp)
  14. public void runE(PreData predata, Metadata md, int ti, Timer timer) {
  15. PreAccess preaccess = new PreAccess(con1, con2);
  16. PreReshuffle prereshuffle = new PreReshuffle(con1, con2);
  17. PrePostProcessT prepostprocesst = new PrePostProcessT(con1, con2);
  18. PreUpdateRoot preupdateroot = new PreUpdateRoot(con1, con2);
  19. PreEviction preeviction = new PreEviction(con1, con2);
  20. int numTuples = md.getStashSizeOfTree(ti) + md.getLBitsOfTree(ti) * md.getW();
  21. int[] tupleParam = new int[] { ti == 0 ? 0 : 1, md.getNBytesOfTree(ti), md.getLBytesOfTree(ti),
  22. md.getABytesOfTree(ti) };
  23. preaccess.runE(predata, md.getTwoTauPow(), numTuples, tupleParam, timer);
  24. prereshuffle.runE(predata, timer);
  25. prepostprocesst.runE(predata, timer);
  26. preupdateroot.runE(predata, md.getStashSizeOfTree(ti), md.getLBitsOfTree(ti), timer);
  27. preeviction.runE(predata, ti == 0, md.getLBitsOfTree(ti) + 1, md.getW(), timer);
  28. }
  29. public void runD(PreData predata, Metadata md, int ti, PreData prev, Timer timer) {
  30. PreAccess preaccess = new PreAccess(con1, con2);
  31. PreReshuffle prereshuffle = new PreReshuffle(con1, con2);
  32. PrePostProcessT prepostprocesst = new PrePostProcessT(con1, con2);
  33. PreUpdateRoot preupdateroot = new PreUpdateRoot(con1, con2);
  34. PreEviction preeviction = new PreEviction(con1, con2);
  35. int[] tupleParam = new int[] { ti == 0 ? 0 : 1, md.getNBytesOfTree(ti), md.getLBytesOfTree(ti),
  36. md.getABytesOfTree(ti) };
  37. preaccess.runD(predata, timer);
  38. prereshuffle.runD(predata, tupleParam, timer);
  39. prepostprocesst.runD(predata, prev, md.getLBytesOfTree(ti), md.getAlBytesOfTree(ti), md.getTau(), timer);
  40. preupdateroot.runD(predata, md.getStashSizeOfTree(ti), md.getLBitsOfTree(ti), tupleParam, timer);
  41. preeviction.runD(predata, ti == 0, md.getLBitsOfTree(ti) + 1, md.getW(), tupleParam, timer);
  42. }
  43. public void runC(PreData predata, Metadata md, int ti, PreData prev, Timer timer) {
  44. PreAccess preaccess = new PreAccess(con1, con2);
  45. PreReshuffle prereshuffle = new PreReshuffle(con1, con2);
  46. PrePostProcessT prepostprocesst = new PrePostProcessT(con1, con2);
  47. PreUpdateRoot preupdateroot = new PreUpdateRoot(con1, con2);
  48. PreEviction preeviction = new PreEviction(con1, con2);
  49. preaccess.runC(timer);
  50. prereshuffle.runC(predata, timer);
  51. prepostprocesst.runC(predata, prev, md.getLBytesOfTree(ti), md.getAlBytesOfTree(ti), timer);
  52. preupdateroot.runC(predata, timer);
  53. preeviction.runC(predata, ti == 0, timer);
  54. }
  55. @Override
  56. public void run(Party party, Metadata md, Forest forest) {
  57. }
  58. }