// FileLogCache.h: interface for the FileLogCache class. // ////////////////////////////////////////////////////////////////////// #ifndef FILELOGCACHE_H #define FILELOGCACHE_H #include "FileHead.h" #include "ChangeSorter.h" #include "clientapi.h" /* The FileLogCache is the object that constructs branching history for a file - it * consists of a number of FileHead objects arranged in two rows, "from" and "into", * which each fork off a central "main" FileHead. */ class FileLogCache { public: FileLogCache(StrBuf, ClientApi*, Error*); /* Constructor takes the path to the file, and ClientApi and Error pointers. * The invoking function can therefore set up connection parameters in the * ClientApi, and be informed of connection errors in the Error. */ virtual ~FileLogCache(); /* AddFrom creates a new FileHead at the end of the "from" row. */ FileHead* AddFrom(StrBuf); /* AddInto does the same for the "into" row. */ FileHead* AddInto(StrBuf); /* AddAfter adds the new FileHead "after" the given one, ie, away from "main". */ FileHead* AddAfter(StrBuf, FileHead*); /* Get returns a pointer to the FileHead whose name is given as a StrBuf. If * it can't find such a FileHead, it creates a new one and returns a pointer to * that. The "from" bool arg indicates whether the new FileHead (if one has to be * created) should be made "from" or "into". */ FileHead* Get(StrBuf& filepath, bool from, FileHead* caller); FileHead* from; //The pointer to the first "from" FileHead. FileHead* into; //The first "into" FileHead. FileHead* main; //The "main" FileHead. /* "head" is the most "fromwards" of the files, and "tail" is the most "intowards". */ FileHead* head; FileHead* tail; ChangeSorter* changes; //A sorted list of change numbers. ClientApi* client; //Connection to Perforce server. Error* errors; int size; //Number of FileHeads in this FileLogCache. int numarrows; //Number of FileRevArrows in this FLC. private: FileHead* GetI(StrBuf& filepath, bool exfrom, FileHead* caller); //case insensitive }; #endif // FILELOGCACHE_H
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#8 | 1689 | Sam Stafford |
Integrate 02.1 API and code cleanup to P4HL. Lots of work. Phew. |
||
#7 | 1600 | Sam Stafford |
Integrate case-insensitivity fix to P4HL. Integration only change. |
||
#6 | 1586 | Sam Stafford | Migrate outstanding changes into P4HL - no functional change. | ||
#5 | 1548 | Sam Stafford |
Integrate RevType change to make sure it works. It does. |
||
#4 | 1450 | Sam Stafford |
Major performance improvement - use one ClientApi connection for all filelogs. Improves querying time about tenfold on large requests! Had to move client->Final() to the constructor to ensure that connection is cleaned up promptly and doesn't hang things up. |
||
#3 | 1433 | Sam Stafford |
Integ display: if you see one of a file's revisions, you see them all. Previously, your view was limited to those revisions which were directly related to the file you asked about. However, if you asked about a file branched from the mainline, this meant that you couldn't see mainline changes that weren't yet integrated into your branch, and that's not terribly useful. |
||
#2 | 975 | Sam Stafford |
Nigh-complete fix for job 4 - the "scan" methods all go from tail to head now, and Get uses the improved "addAfter" method where appropriate. An unforeseen problem was the fact that a complex integ history can get followed through more than one possible path, causing later versions of a given file to get scanned before earlier versions, and messing up the graph. This is fixed (albeit in a kludgey fashion) in scanMain here by making two passes through the FileHead, caching the files on the first pass and actually running scans on the second pass. A slightly more efficient way of handling it might be to keep a list of FileRevs that need to be scanned - perhaps by declaring a temporary FileHead to serve as a list? Once it's been hammered out in scanMain() satisfactorily that method can be employed in the other scan methods. |
||
#1 | 937 | Sam Stafford |
Renaming my guest directory to the more conventional sam_stafford. |
||
//guest/samwise/p4hl/src/dlls/FileLogCache.h | |||||
#1 | 936 | Sam Stafford |
Adding P4HL to the public depot. See relnotes.txt for installation instructions; all relevant files are under p4hl/dist. Source code is under p4hl/src in the form of a VC++ project. |