/// <exception cref="System.Exception"/>
 protected override void ServiceStart()
 {
     if (stateStore != null)
     {
         stateStore.Start();
         TimelineStateStore.TimelineServiceState state = stateStore.LoadState();
         secretManager.Recover(state);
     }
     secretManager.StartThreads();
     base.ServiceStart();
 }
 /// <exception cref="System.IO.IOException"/>
 public virtual void Recover(TimelineStateStore.TimelineServiceState state)
 {
     Log.Info("Recovering " + GetType().Name);
     foreach (DelegationKey key in state.GetTokenMasterKeyState())
     {
         AddKey(key);
     }
     this.delegationTokenSequenceNumber = state.GetLatestSequenceNumber();
     foreach (KeyValuePair <TimelineDelegationTokenIdentifier, long> entry in state.GetTokenState
                  ())
     {
         AddPersistedDelegationToken(entry.Key, entry.Value);
     }
 }