status-pool.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. window.Tracker = window.Tracker || {};
  2. Tracker.StatusPool = function(){
  3. var arrivedSnippetGroupCache, snippetToGroupIdCache, snippetGroupCoverLineCache,
  4. snippetGroupToCodeCache, code, i, id, l, t, groupId, currentArrivedSnippetGroupFlag;
  5. arrivedSnippetGroupCache = {}; // 已到达的碎片组(所有代码)
  6. snippetToGroupIdCache = {}; // 碎片到碎片组的映射(所有代码)
  7. snippetGroupCoverLineCache = {}; // 碎片组覆盖代码行数(所有代码)
  8. snippetGroupToCodeCache = {}; // 碎片组到代码的映射
  9. currentArrivedSnippetGroupFlag = 1; // 当前已到达的代码碎片组标识 0:未到达 1:已到达 2,4,8.. 其他扩展
  10. return {
  11. snippetGroupCreate: function( code, snippetIds ){
  12. groupId = Tracker.Util.nid();
  13. for( i = 0, l = snippetIds.length; i < l; i ++ )
  14. snippetToGroupIdCache[ snippetIds[ i ] ] = groupId;
  15. snippetGroupToCodeCache[ groupId ] = code;
  16. return groupId;
  17. },
  18. arrivedSnippetGroupFlagSet: function( flagNum ){
  19. currentArrivedSnippetGroupFlag = flagNum;
  20. },
  21. arrivedSnippetGroupPut: function( groupId ){
  22. t = arrivedSnippetGroupCache[ groupId ];
  23. if( !( t & currentArrivedSnippetGroupFlag ) ){
  24. arrivedSnippetGroupCache[ groupId ] = ( t + currentArrivedSnippetGroupFlag ) ||
  25. currentArrivedSnippetGroupFlag;
  26. if( snippetGroupCoverLineCache[ groupId ] ){
  27. code = snippetGroupToCodeCache[ groupId ];
  28. code.arriveRowsCount += snippetGroupCoverLineCache[ groupId ];
  29. code.lastModified = Tracker.Util.time();
  30. snippetGroupCoverLineCache[ groupId ] = 0;
  31. }
  32. }
  33. },
  34. arrivedSnippetGroupDelete: function( groupId, flagNum ){
  35. t = arrivedSnippetGroupCache[ groupId ];
  36. if( t == flagNum )
  37. arrivedSnippetGroupCache[ groupId ] = 1;
  38. else if( t & flagNum )
  39. arrivedSnippetGroupCache[ groupId ] -= flagNum;
  40. },
  41. arrivedSnippetGet: function( snippetId ){
  42. return arrivedSnippetGroupCache[ snippetToGroupIdCache[ snippetId ] ];
  43. },
  44. snippetGroupToCodeGet: function( groupId ){
  45. return snippetGroupToCodeCache[ groupId ];
  46. },
  47. snippetGroupCoverLineAdd: function( snippetId ){
  48. groupId = snippetToGroupIdCache[ snippetId ];
  49. snippetGroupCoverLineCache[ groupId ] =
  50. ++ snippetGroupCoverLineCache[ groupId ] || 1;
  51. }
  52. }
  53. }();