Пример #1
0
 internal void deadRemoteLogger(Ice.RemoteLoggerPrx remoteLogger, Ice.Logger logger, Ice.LocalException ex,
                                string operation)
 {
     //
     // No need to convert remoteLogger as we only use its identity
     //
     if (removeRemoteLogger(remoteLogger))
     {
         if (_traceLevel > 0)
         {
             logger.trace(_traceCategory, "detached `" + remoteLogger.ToString() + "' because "
                          + operation + " raised:\n" + ex.ToString());
         }
     }
 }
Пример #2
0
        private void initCompleted(Ice.AsyncResult r)
        {
            Ice.RemoteLoggerPrx remoteLogger = Ice.RemoteLoggerPrxHelper.uncheckedCast(r.getProxy());

            try
            {
                remoteLogger.end_init(r);

                if (_traceLevel > 1)
                {
                    _logger.trace(_traceCategory, r.getOperation() + " on `" + remoteLogger.ToString()
                                  + "' completed successfully");
                }
            }
            catch (Ice.LocalException ex)
            {
                deadRemoteLogger(remoteLogger, _logger, ex, r.getOperation());
            }
        }
Пример #3
0
        private void logCompleted(Ice.AsyncResult r)
        {
            Ice.RemoteLoggerPrx remoteLogger = Ice.RemoteLoggerPrxHelper.uncheckedCast(r.getProxy());

            try
            {
                remoteLogger.end_log(r);

                if (_loggerAdmin.getTraceLevel() > 1)
                {
                    _localLogger.trace(_traceCategory, r.getOperation() + " on `" + remoteLogger.ToString()
                                       + "' completed successfully");
                }
            }
            catch (Ice.CommunicatorDestroyedException)
            {
                // expected if there are outstanding calls during communicator destruction
            }
            catch (Ice.LocalException ex)
            {
                _loggerAdmin.deadRemoteLogger(remoteLogger, _localLogger, ex, r.getOperation());
            }
        }
Пример #4
0
        attachRemoteLogger(Ice.RemoteLoggerPrx prx, Ice.LogMessageType[] messageTypes, string[] categories,
                           int messageMax, Ice.Current current)
        {
            if (prx == null)
            {
                return; // can't send this null RemoteLogger anything!
            }

            Ice.RemoteLoggerPrx remoteLogger = Ice.RemoteLoggerPrxHelper.uncheckedCast(prx.ice_twoway());

            Filters filters = new Filters(messageTypes, categories);
            LinkedList <Ice.LogMessage> initLogMessages = null;

            lock (this)
            {
                if (_sendLogCommunicator == null)
                {
                    if (_destroyed)
                    {
                        throw new Ice.ObjectNotExistException();
                    }

                    _sendLogCommunicator =
                        createSendLogCommunicator(current.adapter.getCommunicator(), _logger.getLocalLogger());
                }

                Ice.Identity remoteLoggerId = remoteLogger.ice_getIdentity();

                if (_remoteLoggerMap.ContainsKey(remoteLoggerId))
                {
                    if (_traceLevel > 0)
                    {
                        _logger.trace(_traceCategory, "rejecting `" + remoteLogger.ToString() +
                                      "' with RemoteLoggerAlreadyAttachedException");
                    }

                    throw new Ice.RemoteLoggerAlreadyAttachedException();
                }

                _remoteLoggerMap.Add(remoteLoggerId,
                                     new RemoteLoggerData(changeCommunicator(remoteLogger, _sendLogCommunicator), filters));

                if (messageMax != 0)
                {
                    initLogMessages = new LinkedList <Ice.LogMessage>(_queue); // copy
                }
                else
                {
                    initLogMessages = new LinkedList <Ice.LogMessage>();
                }
            }

            if (_traceLevel > 0)
            {
                _logger.trace(_traceCategory, "attached `" + remoteLogger.ToString() + "'");
            }

            if (initLogMessages.Count > 0)
            {
                filterLogMessages(initLogMessages, filters.messageTypes, filters.traceCategories, messageMax);
            }

            try
            {
                remoteLogger.initAsync(_logger.getPrefix(), initLogMessages.ToArray()).ContinueWith(
                    (t) =>
                {
                    try
                    {
                        t.Wait();
                        if (_traceLevel > 1)
                        {
                            _logger.trace(_traceCategory, "init on `" + remoteLogger.ToString()
                                          + "' completed successfully");
                        }
                    }
                    catch (System.AggregateException ae)
                    {
                        Debug.Assert(ae.InnerException is Ice.LocalException);
                        deadRemoteLogger(remoteLogger, _logger, (Ice.LocalException)ae.InnerException, "init");
                    }
                });
            }
            catch (Ice.LocalException ex)
            {
                deadRemoteLogger(remoteLogger, _logger, ex, "init");
                throw;
            }
        }