Exemplo n.º 1
0
 internal static string GetExceptionMessage(Exception exception)
 {
     if (SsmUtility.IsTransientException(exception))
     {
         return(exception.Message);
     }
     else
     {
         return(exception.ToString());
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// Hook LogError events and schedule a restart
        /// </summary>
        private void Logger_LogError(object sender, LogErrorEventArgs args)
        {
            Trace.WriteLine("SsmLogger.Logger_LogError: " + SsmUtility.GetExceptionMessage(args.Exception));

            if (this.logError != null)
            {
                this.logError(sender, args);
            }

            this.TryStateTransition(State.Resyncing, delegate
            {
                this.ScheduleRestart(TimeSpan.FromSeconds(1.0));
            });
        }
Exemplo n.º 3
0
        /// <summary>
        /// Report an exception
        /// </summary>
        private void ReportException(Exception exception)
        {
            if (SsmUtility.IsTransientException(exception))
            {
                Trace.WriteLine("SsmLogger.ReportException: " + exception.Message);
            }
            else
            {
                Trace.WriteLine("SsmLogger.ReportException: " + exception.ToString());
            }

            EventHandler <ExceptionEventArgs> handler = this.Exception;

            if (handler != null)
            {
                handler(this, new ExceptionEventArgs(exception));
            }
        }
Exemplo n.º 4
0
        private static void GetDependencyConversion(
            Parameter dependency,
            Conversion parentConversion,
            out Conversion dependencyConversion,
            out string dependencyKey)
        {
            foreach (Conversion conversion in dependency.Conversions)
            {
                dependencyKey = dependency.Id + ":" + conversion.Units;
                if (parentConversion.Expression.IndexOf(dependencyKey, StringComparison.InvariantCultureIgnoreCase) != -1)
                {
                    dependencyConversion = conversion;
                    return;
                }
            }

            dependencyKey        = dependency.Id;
            dependencyConversion = SsmUtility.First(dependency.Conversions);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Synchronously sends a request and waits for the response
        /// </summary>
        public SsmPacket SyncSendReceive(SsmPacket request)
        {
            //Console.WriteLine("#### Raw request data:");
            byte[] requestBuffer = request.Data;
            SsmUtility.DumpBuffer(requestBuffer);

            stream.Write(requestBuffer, 0, requestBuffer.Length);
            Thread.Sleep(250);

            byte[] responseBuffer = new byte[2000];
            int    bytesRead      = stream.Read(responseBuffer, 0, responseBuffer.Length);

            Console.WriteLine("Bytes read: {0}", bytesRead);
            Console.WriteLine("#### Raw response data:");
            SsmUtility.DumpBuffer(responseBuffer);

            SsmPacket response = SsmPacket.ParseResponse(responseBuffer, 0, bytesRead);

            return(response);
        }
Exemplo n.º 6
0
        private Stream GetDataStream_Synchronized(bool throwOnFailure)
        {
            Trace.WriteLine("SsmLogger.GetDataStream_Synchronized, ssmPortName = " +
                            this.ssmPortName +
                            ", throwOnFailure = " +
                            throwOnFailure.ToString(CultureInfo.InvariantCulture) +
                            ", Thread = " +
                            Thread.CurrentThread.ManagedThreadId.ToString(CultureInfo.InvariantCulture));

            if (throwOnFailure)
            {
                return(SsmUtility.GetDataStream(
                           this.ssmPortName,
                           4800,
                           ref this.port,
                           delegate(string line)
                {
                    Trace.WriteLine(line);
                }));
            }
            else
            {
                Exception exception = null;
                try
                {
                    return(SsmUtility.GetDataStream(
                               this.ssmPortName,
                               4800,
                               ref this.port,
                               delegate(string line)
                    {
                        Trace.WriteLine(line);
                    }));
                }
                catch (System.Security.SecurityException ex)
                {
                    exception = ex;
                }
                catch (System.TimeoutException ex)
                {
                    exception = ex;
                }
                catch (System.IO.IOException ex)
                {
                    exception = ex;
                }
                catch (System.UnauthorizedAccessException ex)
                {
                    exception = ex;
                }

                if (throwOnFailure)
                {
                    throw exception;
                }

                this.ReportException(exception);
                Thread.Sleep(1000);
                return(null);
            }
        }