コード例 #1
0
        protected override void OnReceiveAssociateRequest(DcmAssociate association)
        {
            association.NegotiateAsyncOps = false;
            LogID = association.CallingAE;

            _config = Config.Instance.FindPrinter(association.CalledAE);
            if (_config == null)
            {
                SendAssociateReject(DcmRejectResult.Permanent, DcmRejectSource.ServiceUser, DcmRejectReason.CalledAENotRecognized);
                return;
            }

            foreach (DcmPresContext pc in association.GetPresentationContexts())
            {
                if (pc.AbstractSyntax == DicomUID.VerificationSOPClass ||
                    pc.AbstractSyntax == DicomUID.BasicColorPrintManagementMetaSOPClass ||
                    pc.AbstractSyntax == DicomUID.BasicGrayscalePrintManagementMetaSOPClass ||
                    pc.AbstractSyntax == DicomUID.PrinterSOPClass ||
                    //pc.AbstractSyntax == DicomUID.PrinterConfigurationRetrieval ||
                    //pc.AbstractSyntax == DicomUID.PrintJob ||
                    pc.AbstractSyntax == DicomUID.BasicFilmSessionSOPClass ||
                    pc.AbstractSyntax == DicomUID.BasicFilmBoxSOPClass ||
                    pc.AbstractSyntax == DicomUID.BasicGrayscaleImageBoxSOPClass ||
                    pc.AbstractSyntax == DicomUID.BasicColorImageBoxSOPClass)
                {
                    pc.SetResult(DcmPresContextResult.Accept);
                }
                else
                {
                    pc.SetResult(DcmPresContextResult.RejectAbstractSyntaxNotSupported);
                }
            }
            SendAssociateAccept(association);
        }
コード例 #2
0
 protected override void OnReceiveAssociateRequest(DcmAssociate association)
 {
     association.NegotiateAsyncOps = false;
     LogID = association.CallingAE;
     foreach (DcmPresContext pc in association.GetPresentationContexts())
     {
         if (pc.AbstractSyntax == DicomUID.VerificationSOPClass)
         {
             if (pc.HasTransfer(DicomTransferSyntax.ImplicitVRLittleEndian))
             {
                 pc.SetResult(DcmPresContextResult.Accept, DicomTransferSyntax.ImplicitVRLittleEndian);
             }
             else if (pc.HasTransfer(DicomTransferSyntax.ExplicitVRLittleEndian))
             {
                 pc.SetResult(DcmPresContextResult.Accept, DicomTransferSyntax.ExplicitVRLittleEndian);
             }
             else
             {
                 pc.SetResult(DcmPresContextResult.RejectTransferSyntaxesNotSupported);
             }
         }
         else
         {
             pc.SetResult(DcmPresContextResult.RejectAbstractSyntaxNotSupported);
         }
     }
     SendAssociateAccept(association);
 }
コード例 #3
0
ファイル: CStoreService.cs プロジェクト: hide1980/mdcm
		protected override void OnReceiveAssociateRequest(DcmAssociate association) {
			association.NegotiateAsyncOps = false;
			LogID = association.CallingAE;
			if (OnAssociationRequest != null) {
				DcmAssociateResult result = OnAssociationRequest(this, association);
				if (result == DcmAssociateResult.RejectCalledAE) {
					SendAssociateReject(DcmRejectResult.Permanent, DcmRejectSource.ServiceUser, DcmRejectReason.CalledAENotRecognized);
					return;
				}
				else if (result == DcmAssociateResult.RejectCallingAE) {
					SendAssociateReject(DcmRejectResult.Permanent, DcmRejectSource.ServiceUser, DcmRejectReason.CallingAENotRecognized);
					return;
				}
				else if (result == DcmAssociateResult.RejectNoReason) {
					SendAssociateReject(DcmRejectResult.Permanent, DcmRejectSource.ServiceUser, DcmRejectReason.NoReasonGiven);
					return;
				}
				else {
					foreach (DcmPresContext pc in association.GetPresentationContexts()) {
						if (pc.Result == DcmPresContextResult.Proposed)
							pc.SetResult(DcmPresContextResult.RejectNoReason);
					}
				}
			}
			else {
				DcmAssociateProfile profile = DcmAssociateProfile.Find(association, true);
				profile.Apply(association);
			}
			SendAssociateAccept(association);
		}
コード例 #4
0
 private void AddStoragePresentationContexts(DcmAssociate associate)
 {
     foreach (DicomUID uid in DicomUID.Entries.Values)
     {
         if (uid.Description.Contains("Storage"))
         {
             byte pcid = associate.AddPresentationContext(uid);
             associate.AddTransferSyntax(pcid, DicomTransferSyntax.ExplicitVRLittleEndian);
             associate.AddTransferSyntax(pcid, DicomTransferSyntax.ImplicitVRLittleEndian);
         }
     }
 }
コード例 #5
0
        protected override void OnConnected()
        {
            DcmAssociate associate = new DcmAssociate();

            byte pcid = associate.AddPresentationContext(_moveSopClass);

            associate.AddTransferSyntax(pcid, DicomTransferSyntax.ImplicitVRLittleEndian);

            associate.CalledAE         = CalledAE;
            associate.CallingAE        = CallingAE;
            associate.MaximumPduLength = MaxPduSize;

            SendAssociateRequest(associate);
        }
コード例 #6
0
ファイル: QRService.cs プロジェクト: gogorrr/mdcm
        protected override void OnReceiveAssociateRequest(DcmAssociate association)
        {
            association.NegotiateAsyncOps = false;
            LogID = association.CallingAE;
            if (OnAssociationRequest != null)
            {
                DcmAssociateResult result = OnAssociationRequest(this, association);
                if (result == DcmAssociateResult.RejectCalledAE)
                {
                    SendAssociateReject(DcmRejectResult.Permanent, DcmRejectSource.ServiceUser, DcmRejectReason.CalledAENotRecognized);
                    return;
                }
                else if (result == DcmAssociateResult.RejectCallingAE)
                {
                    SendAssociateReject(DcmRejectResult.Permanent, DcmRejectSource.ServiceUser, DcmRejectReason.CallingAENotRecognized);
                    return;
                }
                else if (result == DcmAssociateResult.RejectNoReason)
                {
                    SendAssociateReject(DcmRejectResult.Permanent, DcmRejectSource.ServiceUser, DcmRejectReason.NoReasonGiven);
                    return;
                }
                else
                {
                    foreach (DcmPresContext pc in association.GetPresentationContexts())
                    {
                        if (pc.Result == DcmPresContextResult.Proposed)
                        {
                            pc.SetResult(DcmPresContextResult.RejectNoReason);
                        }
                    }
                }
            }
            else
            {
                DcmAssociateProfile profile = DcmAssociateProfile.Find(association, true);
                profile.Apply(association);
            }

            SendAssociateAccept(association);
        }
コード例 #7
0
ファイル: CEchoService.cs プロジェクト: fo-dicom/mdcm
 protected override void OnReceiveAssociateRequest(DcmAssociate association)
 {
     association.NegotiateAsyncOps = false;
     LogID = association.CallingAE;
     foreach (DcmPresContext pc in association.GetPresentationContexts()) {
         if (pc.AbstractSyntax == DicomUID.VerificationSOPClass) {
             if (pc.HasTransfer(DicomTransferSyntax.ImplicitVRLittleEndian)) {
                 pc.SetResult(DcmPresContextResult.Accept, DicomTransferSyntax.ImplicitVRLittleEndian);
             }
             else if (pc.HasTransfer(DicomTransferSyntax.ExplicitVRLittleEndian)) {
                 pc.SetResult(DcmPresContextResult.Accept, DicomTransferSyntax.ExplicitVRLittleEndian);
             }
             else {
                 pc.SetResult(DcmPresContextResult.RejectTransferSyntaxesNotSupported);
             }
         } else {
             pc.SetResult(DcmPresContextResult.RejectAbstractSyntaxNotSupported);
         }
     }
     SendAssociateAccept(association);
 }
コード例 #8
0
        protected override void OnConnected()
        {
            var associate = new DcmAssociate();

            byte pcid = associate.AddPresentationContext(DicomUID.PrinterSOPClass);

            associate.AddTransferSyntax(pcid, DicomTransferSyntax.ExplicitVRLittleEndian);
            associate.AddTransferSyntax(pcid, DicomTransferSyntax.ImplicitVRLittleEndian);

            pcid = associate.AddPresentationContext(DicomUID.BasicGrayscalePrintManagementMetaSOPClass);
            associate.AddTransferSyntax(pcid, DicomTransferSyntax.ExplicitVRLittleEndian);
            associate.AddTransferSyntax(pcid, DicomTransferSyntax.ImplicitVRLittleEndian);

            pcid = associate.AddPresentationContext(DicomUID.BasicColorPrintManagementMetaSOPClass);
            associate.AddTransferSyntax(pcid, DicomTransferSyntax.ExplicitVRLittleEndian);
            associate.AddTransferSyntax(pcid, DicomTransferSyntax.ImplicitVRLittleEndian);

            associate.CalledAE         = CalledAE;
            associate.CallingAE        = CallingAE;
            associate.MaximumPduLength = MaxPduSize;

            SendAssociateRequest(associate);
        }
コード例 #9
0
 protected override void OnReceiveAssociateAccept(DcmAssociate association)
 {
     SendNextCStoreRequest();
 }
コード例 #10
0
        protected override void OnConnected()
        {
            if (OnCStoreConnected != null)
            {
                try {
                    OnCStoreConnected(this);
                }
                catch (Exception e) {
                    Log.Error("Unhandled exception in user C-Store Connected Callback: {0}", e.Message);
                }
            }

            if (PendingCount > 0)
            {
                DcmAssociate associate = new DcmAssociate();

                lock (_lock) {
                    foreach (DicomUID uid in _presContextMap.Keys)
                    {
                        if (_preferredTransferSyntax != null)
                        {
                            if (!_presContextMap[uid].Contains(_preferredTransferSyntax))
                            {
                                _presContextMap[uid].Remove(_preferredTransferSyntax);
                            }
                            _presContextMap[uid].Insert(0, _preferredTransferSyntax);
                        }
                        if (_offerExplicit && !_presContextMap[uid].Contains(DicomTransferSyntax.ExplicitVRLittleEndian))
                        {
                            _presContextMap[uid].Add(DicomTransferSyntax.ExplicitVRLittleEndian);
                        }
                        if (!_presContextMap[uid].Contains(DicomTransferSyntax.ImplicitVRLittleEndian))
                        {
                            _presContextMap[uid].Add(DicomTransferSyntax.ImplicitVRLittleEndian);
                        }

                        if (!DicomUID.IsImageStorage(uid))
                        {
                            List <DicomTransferSyntax> remove = new List <DicomTransferSyntax>();
                            foreach (DicomTransferSyntax tx in _presContextMap[uid])
                            {
                                if (DicomTransferSyntax.IsImageCompression(tx))
                                {
                                    remove.Add(tx);
                                }
                            }
                            foreach (DicomTransferSyntax tx in remove)
                            {
                                _presContextMap[uid].Remove(tx);
                            }
                        }
                    }

                    if (SerializedPresentationContexts)
                    {
                        foreach (DicomUID uid in _presContextMap.Keys)
                        {
                            foreach (DicomTransferSyntax ts in _presContextMap[uid])
                            {
                                byte pcid = associate.AddPresentationContext(uid);
                                associate.AddTransferSyntax(pcid, ts);
                            }
                        }
                    }
                    else
                    {
                        foreach (DicomUID uid in _presContextMap.Keys)
                        {
                            byte pcid = associate.AddOrGetPresentationContext(uid);
                            foreach (DicomTransferSyntax ts in _presContextMap[uid])
                            {
                                associate.AddTransferSyntax(pcid, ts);
                            }
                        }
                    }
                }

                associate.CalledAE         = CalledAE;
                associate.CallingAE        = CallingAE;
                associate.MaximumPduLength = MaxPduSize;

                SendAssociateRequest(associate);
            }
            else
            {
                Close();
            }
        }
コード例 #11
0
 protected override void OnReceiveAssociateAccept(DcmAssociate association)
 {
     PerformPrinterQueryOrRelease();
 }
コード例 #12
0
        protected override void OnReceiveAssociateAccept(DcmAssociate association)
        {
            byte pcid = association.FindAbstractSyntax(DicomUID.VerificationSOPClass);

            SendCEchoRequest(pcid, NextMessageID(), Priority);
        }
コード例 #13
0
ファイル: PrintClient.cs プロジェクト: GMZ/mdcm
 protected override void OnReceiveAssociateAccept(DcmAssociate association)
 {
     PerformPrinterQueryOrRelease();
 }
コード例 #14
0
ファイル: PrintClient.cs プロジェクト: GMZ/mdcm
        protected override void OnConnected()
        {
            var associate = new DcmAssociate();

            byte pcid = associate.AddPresentationContext(DicomUID.PrinterSOPClass);
            associate.AddTransferSyntax(pcid, DicomTransferSyntax.ExplicitVRLittleEndian);
            associate.AddTransferSyntax(pcid, DicomTransferSyntax.ImplicitVRLittleEndian);

            pcid = associate.AddPresentationContext(DicomUID.BasicGrayscalePrintManagementMetaSOPClass);
            associate.AddTransferSyntax(pcid, DicomTransferSyntax.ExplicitVRLittleEndian);
            associate.AddTransferSyntax(pcid, DicomTransferSyntax.ImplicitVRLittleEndian);

            pcid = associate.AddPresentationContext(DicomUID.BasicColorPrintManagementMetaSOPClass);
            associate.AddTransferSyntax(pcid, DicomTransferSyntax.ExplicitVRLittleEndian);
            associate.AddTransferSyntax(pcid, DicomTransferSyntax.ImplicitVRLittleEndian);

            associate.CalledAE = CalledAE;
            associate.CallingAE = CallingAE;
            associate.MaximumPduLength = MaxPduSize;

            SendAssociateRequest(associate);
        }