コード例 #1
0
 /// <returns>all refs which were advertised to the client.</returns>
 public IDictionary <string, Ref> GetAdvertisedRefs()
 {
     if (refs == null)
     {
         refs = refFilter.Filter(db.GetAllRefs());
     }
     return(refs);
 }
コード例 #2
0
 /// <exception cref="System.IO.IOException"></exception>
 private void Service()
 {
     if (biDirectionalPipe)
     {
         SendAdvertisedRefs(new RefAdvertiser.PacketLineOutRefAdvertiser(pckOut));
     }
     else
     {
         advertised = new HashSet <ObjectId>();
         refs       = refFilter.Filter(db.GetAllRefs());
         foreach (Ref @ref in refs.Values)
         {
             if (@ref.GetObjectId() != null)
             {
                 advertised.AddItem(@ref.GetObjectId());
             }
         }
     }
     RecvWants();
     if (wantIds.IsEmpty())
     {
         return;
     }
     if (options.Contains(OPTION_MULTI_ACK_DETAILED))
     {
         multiAck = BasePackFetchConnection.MultiAck.DETAILED;
     }
     else
     {
         if (options.Contains(OPTION_MULTI_ACK))
         {
             multiAck = BasePackFetchConnection.MultiAck.CONTINUE;
         }
         else
         {
             multiAck = BasePackFetchConnection.MultiAck.OFF;
         }
     }
     if (Negotiate())
     {
         SendPack();
     }
 }