예제 #1
0
        internal bool Send(string message, DicomObject fragment)
        {
            //Logging.Log("Association.Send");

            try
            {
                if (fragment.Size > this.packetSize)
                {
                    Logging.Log(LogLevel.Error, "fragment exceeds packet size.");
                    return(false);
                }

                MemoryStream memory = new MemoryStream();
                fragment.Write(memory);

                NetworkStream output = new NetworkStream(socket, FileAccess.Write, false);

                byte[] bytes = memory.ToArray();
                Dump(">> " + message, bytes);

                output.Write(bytes, 0, (int)memory.Length);

                State = (State != State.Closing) ? State.Waiting : State;
            }
            catch (Exception ex)
            {
                Logging.Log(LogLevel.Error, ex.Message);
                return(false);
            }
            return(true);
        }
예제 #2
0
        internal bool SendPdu(ServiceClass service, string message, DicomObject pdu)
        {
            //Logging.Log("Association.SendPdu");

            try
            {
                if (State == State.Aborted)
                {
                    throw AbortException;
                }

                MemoryStream memory = new MemoryStream();
                pdu.Write(memory);

                NetworkStream output = new NetworkStream(socket, FileAccess.Write, false);

                byte[] bytes = memory.ToArray();
                Dump(">> " + message, bytes);

                if (service != null)
                {
                    service.LastMessage = null;
                }
                output.Write(bytes, 0, (int)memory.Length);

                State = (State != State.Closing) ? State.Waiting : State;
            }
            catch (Exception ex)
            {
                Logging.Log(LogLevel.Error, ex.Message);
                throw;
            }
            return(true);
        }
예제 #3
0
 private void Dump(string message, byte[] bytes)
 {
     if (bytes.Length > MaxPduSize / 20)
     {
         Logging.Log(LogLevel.Verbose, "Dump {0} bytes.", bytes.Length);
     }
     else
     {
         string text = DicomObject.ToText(bytes);
         text = message + "\r\n" + text;
         Logging.Log(LogLevel.Verbose, text.ToString());
     }
 }
예제 #4
0
        public static string Log(LogLevel level, string message, byte[] bytes)
        {
            string result = String.Empty;

            try
            {
                result = DicomObject.ToText(bytes);
                result = result + "\r\n" + result;
                result = Log(level, result);
            }
            catch
            {
                Debug.WriteLine("LoggingError:" + result);
            }
            return(result);
        }
예제 #5
0
        public static string Log(DicomObject @object)
        {
            string result = String.Empty;

            try
            {
                if (@object != null)
                {
                    result = Log(LogLevel.Dump, @object.GetType().Name, @object.ToArray());
                }
            }
            catch
            {
                Debug.WriteLine("LoggingError:" + (string)((@object != null) ? @object.GetType().Name : ""));
            }
            return(result);
        }
예제 #6
0
 public bool SendPdu(string message, DicomObject pdu)
 {
     return(association.SendPdu(this, message, pdu));
 }