示例#1
0
        /// <summary>
        ///   Initializes a new instance of the <see cref="Session" /> class.
        /// </summary>
        /// <param name="clientId"> The client id. </param>
        /// <param name="sessionId"> The session id. </param>
        /// <param name="serverPipe"> The server pipe. </param>
        /// <param name="responsePipe"> The response pipe. </param>
        /// <param name="userId"> </param>
        /// <param name="isElevated"> </param>
        /// <remarks>
        /// </remarks>
        protected Session(string clientId, string sessionId, NamedPipeServerStream serverPipe, NamedPipeServerStream responsePipe, string userId,
                          bool isElevated)
        {
            _clientId      = clientId;
            _sessionId     = sessionId;
            _serverPipe    = serverPipe;
            _responsePipe  = responsePipe;
            _userId        = userId;
            _isElevated    = isElevated;
            _isAsychronous = serverPipe == responsePipe;
            Connected      = true;
            _sessionData   = new SessionData {
                Session = this
            };

            _outgoingDispatcher = new OutgoingCallDispatcher(typeof(IPackageManagerResponse), WriteAsync);
            _dispatcher         = _outgoingDispatcher.ActLike <IPackageManagerResponse>();

            // this session task
            _task = Task.Factory.StartNew(ProcessMessages, _cancellationTokenSource.Token);

            // this task is not attached to a parent anywhere.
            _task.AutoManage();

            // when the task is done, call end.
            _task.ContinueWith(antecedent => End());
        }
示例#2
0
 internal void GetSettingsData(IPackageManagerResponse response)
 {
     foreach( var p in Priorities) {
         foreach( var n in GetCanonicalNameStrings(p)) {
             foreach( var k in GetKeys(p, n) ) {
                 var v = this[p, n, k];
                 if( v != null ) {
                     response.GeneralPackageSetting(p, n, k, v);
                 }
             }
         }
     }
 }
示例#3
0
 internal void GetSettingsData(IPackageManagerResponse response)
 {
     foreach (var p in Priorities)
     {
         foreach (var n in GetCanonicalNameStrings(p))
         {
             foreach (var k in GetKeys(p, n))
             {
                 var v = this[p, n, k];
                 if (v != null)
                 {
                     response.GeneralPackageSetting(p, n, k, v);
                 }
             }
         }
     }
 }