tikhomirov@22: /* tikhomirov@22: * Copyright (c) 2010, 2011 Artem Tikhomirov tikhomirov@2: */ tikhomirov@2: package com.tmate.hgkit.ll; tikhomirov@2: tikhomirov@2: /** tikhomirov@2: * tikhomirov@2: * @author artem tikhomirov@2: */ tikhomirov@2: public abstract class Revlog { tikhomirov@2: tikhomirov@2: private final HgRepository hgRepo; tikhomirov@21: protected final RevlogStream content; tikhomirov@2: tikhomirov@21: protected Revlog(HgRepository hgRepo, RevlogStream content) { tikhomirov@2: if (hgRepo == null) { tikhomirov@2: throw new NullPointerException(); tikhomirov@2: } tikhomirov@2: this.hgRepo = hgRepo; tikhomirov@21: this.content = content; tikhomirov@2: } tikhomirov@2: tikhomirov@2: public final HgRepository getRepo() { tikhomirov@2: return hgRepo; tikhomirov@2: } tikhomirov@2: tikhomirov@21: public int getRevisionCount() { tikhomirov@21: return content.revisionCount(); tikhomirov@21: } tikhomirov@21: tikhomirov@22: // FIXME byte[] data might be too expensive, for few usecases it may be better to have intermediate Access object (when we don't need full data tikhomirov@22: // instantly - e.g. calculate hash, or comparing two revisions tikhomirov@2: public interface Inspector { tikhomirov@3: // XXX boolean retVal to indicate whether to continue? tikhomirov@24: // TODO specify nodeid and data length, and reuse policy (i.e. if revlog stream doesn't reuse nodeid[] for each call) tikhomirov@24: void next(int revisionNumber, int actualLen, int baseRevision, int linkRevision, int parent1Revision, int parent2Revision, byte[/*20*/] nodeid, byte[] data); tikhomirov@2: } tikhomirov@2: }