Example #1
0
 public static AReleaseRP Parse(UnparsedPdu raw)
 {
     if (raw.length() != 4)
     {
         throw new PduException("Illegal A-RELEASE-RQ " + raw, new AAbort(AAbort.SERVICE_PROVIDER, AAbort.INVALID_PDU_PARAMETER_VALUE));
     }
     return instance;
 }
        public virtual PduI readFrom(System.IO.Stream ins, byte[] buf)
        {
            UnparsedPdu raw = new UnparsedPdu(ins, buf);
            switch (raw.GetType())
            {
                case 1:
                    return AAssociateRQ.Parse(raw);

                case 2:
                    return AAssociateAC.Parse(raw);

                case 3:
                    return AAssociateRJ.Parse(raw);

                case 4:
                    return PDataTF.Parse(raw);

                case 5:
                    return AReleaseRQ.Parse(raw);

                case 6:
                    return AReleaseRP.Parse(raw);

                case 7:
                    return AAbort.Parse(raw);

                default:
                    throw new PduException("Unrecognized " + raw, new AAbort(AAbort.SERVICE_PROVIDER, AAbort.UNRECOGNIZED_PDU));

            }
        }
Example #3
0
 internal static AAssociateAC Parse(UnparsedPdu raw)
 {
     return (AAssociateAC) new AAssociateAC().Init(raw);
 }
Example #4
0
 internal static AAssociateRJ Parse(UnparsedPdu raw)
 {
     if (raw.length() != 4)
     {
         throw new PduException("Illegal A-ASSOCIATE-RJ " + raw, new AAbort(AAbort.SERVICE_PROVIDER, AAbort.INVALID_PDU_PARAMETER_VALUE));
     }
     return new AAssociateRJ(raw.buffer());
 }
Example #5
0
        /// <summary>
        /// Read from network socket
        /// </summary>
        /// <param name="timeout"></param>
        /// <param name="buf"></param>
        /// <returns></returns>
        public PduI Read(int timeout, byte[] buf)
        {
            try
            {
                UnparsedPdu raw = null;

                s.ReceiveTimeout = timeout;
                try
                {
                    raw = new UnparsedPdu(stream, buf);
                }
                catch (IOException e)
                {
                    ChangeState(STA1);
                    throw e;
                }
                return raw != null ? state.Parse(raw) : null;
            }
            catch (IOException ioe)
            {
                if (assocListener != null)
                    assocListener.Error(assoc, ioe);
                throw ioe;
            }
        }
Example #6
0
            internal override PduI Parse(UnparsedPdu raw)
            {
                try
                {
                    switch (raw.GetType())
                    {
                        case 1:
                            m_fsm.FireReceived(m_fsm.rq = AAssociateRQ.Parse(raw));
                            m_fsm.ChangeState(m_fsm.STA3);
                            return m_fsm.rq;

                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                            throw new PduException("Unexpected " + raw, new AAbort(AAbort.SERVICE_PROVIDER, AAbort.UNEXPECTED_PDU));

                        case 7:
                            m_fsm.FireReceived(m_fsm.aa = AAbort.Parse(raw));
                            m_fsm.ChangeState(m_fsm.STA1);
                            return m_fsm.aa;

                        default:
                            throw new PduException("Unrecognized " + raw, new AAbort(AAbort.SERVICE_PROVIDER, AAbort.UNRECOGNIZED_PDU));
                    }
                }
                catch (PduException ule)
                {
                    try
                    {
                        Write(ule.AAbort);
                    }
                    catch (System.Exception ignore)
                    {
                    }
                    throw ule;
                }
            }
Example #7
0
            internal override PduI Parse(UnparsedPdu raw)
            {
                try
                {
                    switch (raw.GetType())
                    {
                        case 1:
                        case 2:
                        case 3:
                            throw new PduException("Unexpected " + raw, new AAbort(AAbort.SERVICE_PROVIDER, AAbort.UNEXPECTED_PDU));

                        case 4:
                            return m_fsm.FireReceived(PDataTF.Parse(raw));

                        case 5:
                            PduI pdu = m_fsm.FireReceived(AReleaseRQ.Parse(raw));
                            m_fsm.ChangeState(m_fsm.requestor?m_fsm.STA9:m_fsm.STA10);
                            return pdu;

                        case 6:
                            m_fsm.FireReceived(pdu = AReleaseRP.Parse(raw));
                            m_fsm.ChangeState(m_fsm.STA1);
                            return pdu;

                        case 7:
                            m_fsm.FireReceived(m_fsm.aa = AAbort.Parse(raw));
                            m_fsm.ChangeState(m_fsm.STA1);
                            return m_fsm.aa;

                        default:
                            throw new PduException("Unrecognized " + raw, new AAbort(AAbort.SERVICE_PROVIDER, AAbort.UNRECOGNIZED_PDU));

                    }
                }
                catch (PduException ule)
                {
                    try
                    {
                        Write(ule.AAbort);
                    }
                    catch (System.Exception ignore)
                    {
                    }
                    throw ule;
                }
            }
Example #8
0
 public static AAssociateRQ Parse(UnparsedPdu raw)
 {
     return (AAssociateRQ) new AAssociateRQ().Init(raw);
 }
Example #9
0
 public static PDataTF Parse(UnparsedPdu raw)
 {
     if (raw.buffer() == null)
     {
         throw new PduException("Pdu length exceeds supported maximum " + raw, new AAbort(AAbort.SERVICE_PROVIDER, AAbort.REASON_NOT_SPECIFIED));
     }
     return new PDataTF(raw.length(), raw.buffer());
 }
Example #10
0
        protected virtual AAssociateRQAC Init(UnparsedPdu raw)
        {
            if (raw.buffer() == null)
            {
                throw new PduException("Pdu length exceeds supported maximum " + raw, new AAbort(AAbort.SERVICE_PROVIDER, AAbort.REASON_NOT_SPECIFIED));
            }
            ByteBuffer bb = ByteBuffer.Wrap( raw.buffer(), 6, raw.length(), ByteOrder.BIG_ENDIAN );
            try
            {
                version = bb.ReadInt16();		// Protocol version
                bb.Skip(2);						// Skip 2 bytes
                calledAET = bb.ReadString(16);	// Called AET
                callingAET = bb.ReadString(16);	// Calling AET
                if( bb.Skip(32) != 32)
                {
                    throw new EndOfStreamException();
                }

                while( bb.Position < bb.Length )
                {
                    int itemType = bb.ReadByte();	// Item type
                    bb.Skip();						// Skip one byte
                    int itemLen = bb.ReadInt16();	// Item length

                    switch (itemType)
                    {
                        case 0x10:
                            appCtxUID = bb.ReadString(itemLen);
                            break;

                        case 0x20:
                        case 0x21:
                            if (itemType != pctype())
                            {
                                throw new PduException("unexpected item type " + System.Convert.ToString(itemType, 16) + 'H', new AAbort(AAbort.SERVICE_PROVIDER, AAbort.UNEXPECTED_PDU_PARAMETER));
                            }
                            AddPresContext(new PresContext(itemType, bb, itemLen));
                            break;

                        case 0x50:
                            ReadUserInfo(bb, itemLen);
                            break;

                        default:
                            throw new PduException("unrecognized item type " + System.Convert.ToString(itemType, 16) + 'H', new AAbort(AAbort.SERVICE_PROVIDER, AAbort.UNRECOGNIZED_PDU_PARAMETER));
                    }
                }
            }
            catch (PduException e)
            {
                throw e;
            }
            catch (System.Exception e)
            {
                throw new PduException("Failed to parse " + raw, e, new AAbort(AAbort.SERVICE_PROVIDER, AAbort.REASON_NOT_SPECIFIED));
            }
            return this;
        }
Example #11
0
 internal static AAbort Parse(UnparsedPdu raw)
 {
     if (raw.length() != 4)
     {
         throw new PduException("Illegal A-ABORT " + raw, new AAbort(SERVICE_PROVIDER, INVALID_PDU_PARAMETER_VALUE));
     }
     return new AAbort(raw.buffer());
 }