dcmnet/include/dcmtk/dcmnet/assoc.h

00001 /*
00002  *
00003  *  Copyright (C) 1994-2010, OFFIS e.V.
00004  *  All rights reserved.  See COPYRIGHT file for details.
00005  *
00006  *  This software and supporting documentation were partly developed by
00007  *
00008  *    OFFIS e.V.
00009  *    R&D Division Health
00010  *    Escherweg 2
00011  *    D-26121 Oldenburg, Germany
00012  *
00013  *  For further copyrights, see the following paragraphs.
00014  *
00015  */
00016 
00017 /*
00018 **  Copyright (C) 1993/1994, OFFIS, Oldenburg University and CERIUM
00019 **
00020 **  This software and supporting documentation were
00021 **  developed by
00022 **
00023 **    Institut OFFIS
00024 **    Bereich Kommunikationssysteme
00025 **    Westerstr. 10-12
00026 **    26121 Oldenburg, Germany
00027 **
00028 **    Fachbereich Informatik
00029 **    Abteilung Prozessinformatik
00030 **    Carl von Ossietzky Universitaet Oldenburg
00031 **    Ammerlaender Heerstr. 114-118
00032 **    26111 Oldenburg, Germany
00033 **
00034 **    CERIUM
00035 **    Laboratoire SIM
00036 **    Faculte de Medecine
00037 **    2 Avenue du Pr. Leon Bernard
00038 **    35043 Rennes Cedex, France
00039 **
00040 **  for CEN/TC251/WG4 as a contribution to the Radiological
00041 **  Society of North America (RSNA) 1993 Digital Imaging and
00042 **  Communications in Medicine (DICOM) Demonstration.
00043 **
00044 **  THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND NEITHER OFFIS,
00045 **  OLDENBURG UNIVERSITY NOR CERIUM MAKE ANY WARRANTY REGARDING
00046 **  THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY OR
00047 **  FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER
00048 **  DISEASES OR ITS CONFORMITY TO ANY SPECIFICATION.  THE
00049 **  ENTIRE RISK AS TO QUALITY AND PERFORMANCE OF THE SOFTWARE
00050 **  IS WITH THE USER.
00051 **
00052 **  Copyright of the software and supporting documentation
00053 **  is, unless otherwise stated, jointly owned by OFFIS,
00054 **  Oldenburg University and CERIUM and free access is hereby
00055 **  granted as a license to use this software, copy this
00056 **  software and prepare derivative works based upon this
00057 **  software. However, any distribution of this software
00058 **  source code or supporting documentation or derivative
00059 **  works (source code and supporting documentation) must
00060 **  include the three paragraphs of this copyright notice.
00061 **
00062 */
00063 
00064 /*
00065 **
00066 ** Author: Andrew Hewett                Created: 03-06-93
00067 **
00068 ** Module: association
00069 **
00070 ** Purpose:
00071 **      This file contains the routines which provide association management
00072 **      for DICOM applications.  It maintains structures which describe
00073 **      active associations and provides access to association specific
00074 **      informtion.  Also provided are routines for aiding association
00075 **      negotiation (presentation contexts, abstract syntaxes, transfer
00076 **      syntaxes, maximum PDU length, and other extended negotiation).
00077 **
00078 **      This package uses the facilities of the DICOM Upper Layer for
00079 **      receiving/sending association requests/responses.
00080 **
00081 **      Each active association is represented by an T_ASC_Association
00082 **      structure which contains all relevant information.
00083 **
00084 ** Module Prefix: ASC_
00085 **
00086 ** Last Update:         $Author: joergr $
00087 ** Update Date:         $Date: 2010-12-01 08:26:10 $
00088 ** CVS/RCS Revision:    $Revision: 1.33 $
00089 ** Status:              $State: Exp $
00090 **
00091 ** CVS/RCS Log at end of file
00092 */
00093 
00094 
00095 #ifndef ASSOCIATION_H
00096 #define ASSOCIATION_H
00097 
00098 #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
00099 
00100 /*
00101 ** Required Include Files
00102 */
00103 #include "dcmtk/dcmnet/dicom.h"
00104 #include "dcmtk/dcmnet/lst.h"
00105 #include "dcmtk/dcmnet/dul.h"
00106 
00107 /*
00108 ** Constant Definitions
00109 */
00110 
00111 /*
00112  * There have been reports that smaller PDUs work better in some environments.
00113  * Allow a 4K minimum and a 128K maximum. Any further extension requires
00114  * modifications in the DUL code.
00115  */
00116 #define ASC_DEFAULTMAXPDU       16384 /* 16K is default if nothing else specified */
00117 #define ASC_MINIMUMPDUSIZE       4096
00118 #define ASC_MAXIMUMPDUSIZE     131072 /* 128K - we only handle this big */
00119 
00120 /*
00121 ** Type Definitions
00122 */
00123 
00124 /*
00125 ** Network initialization structure.
00126 ** Is a wrapper for DUL functionality.
00127 */
00128 
00129 enum T_ASC_NetworkRole
00130 {
00131     NET_ACCEPTOR,   /* Provider Only */
00132     NET_REQUESTOR,    /* User Only */
00133     NET_ACCEPTORREQUESTOR /* User and Provider */
00134 };
00135 
00136 struct T_ASC_Network
00137 {
00138     T_ASC_NetworkRole   role;
00139     int               acceptorPort;
00140     DUL_NETWORKKEY      *network;
00141 };
00142 
00143 
00144 /*
00145 ** Association negotiation parameters.
00146 **
00147 */
00148 
00149 
00150 /* not defined anywhere (I think) but a hard limitation for now.
00151  * DICOM (1998) defines 22 transfer syntaxes, this upper limit
00152  * should allow for sufficiently many private transfer syntaxes.
00153  */
00154 #define DICOM_MAXTRANSFERSYNTAXES 50
00155 
00156 
00157 typedef DUL_PRESENTATIONCONTEXTID T_ASC_PresentationContextID;
00158 
00159 enum T_ASC_P_ResultReason
00160 { /* Part 8, pp 45. */
00161     ASC_P_ACCEPTANCE              = 0,
00162     ASC_P_USERREJECTION               = 1,
00163     ASC_P_NOREASON                  = 2,
00164     ASC_P_ABSTRACTSYNTAXNOTSUPPORTED    = 3,
00165     ASC_P_TRANSFERSYNTAXESNOTSUPPORTED  = 4,
00166     ASC_P_NOTYETNEGOTIATED              = 255
00167 };
00168 
00169 enum T_ASC_SC_ROLE
00170 {
00171     ASC_SC_ROLE_NONE,
00172     ASC_SC_ROLE_DEFAULT,
00173     ASC_SC_ROLE_SCU,
00174     ASC_SC_ROLE_SCP,
00175     ASC_SC_ROLE_SCUSCP
00176 };
00177 
00178 struct T_ASC_PresentationContext
00179 {
00180     T_ASC_PresentationContextID presentationContextID;
00181     DIC_UI      abstractSyntax;
00182     unsigned char     transferSyntaxCount;
00183     DIC_UI    proposedTransferSyntaxes[DICOM_MAXTRANSFERSYNTAXES];
00184     DIC_UI      acceptedTransferSyntax;
00185     T_ASC_P_ResultReason  resultReason;
00186     T_ASC_SC_ROLE     proposedRole;
00187     T_ASC_SC_ROLE   acceptedRole;
00188 };
00189 
00190 enum T_ASC_RejectParametersResult
00191 {
00192     ASC_RESULT_REJECTEDPERMANENT      = 1,
00193     ASC_RESULT_REJECTEDTRANSIENT      = 2
00194 };
00195 
00196 enum T_ASC_RejectParametersSource
00197 {
00198     ASC_SOURCE_SERVICEUSER                          = 1,
00199     ASC_SOURCE_SERVICEPROVIDER_ACSE_RELATED         = 2,
00200     ASC_SOURCE_SERVICEPROVIDER_PRESENTATION_RELATED = 3
00201 };
00202 
00203 enum T_ASC_RejectParametersReason
00204 { /* the following values are coded by DUL */
00205     /* Service User reasons */
00206     ASC_REASON_SU_NOREASON                          = 0x0101,
00207     ASC_REASON_SU_APPCONTEXTNAMENOTSUPPORTED        = 0x0102,
00208     ASC_REASON_SU_CALLINGAETITLENOTRECOGNIZED       = 0x0103,
00209     ASC_REASON_SU_CALLEDAETITLENOTRECOGNIZED        = 0x0107,
00210     /* Service Provider ACSE Related reasons */
00211     ASC_REASON_SP_ACSE_NOREASON                     = 0x0201,
00212     ASC_REASON_SP_ACSE_PROTOCOLVERSIONNOTSUPPORTED  = 0x0202,
00213     /* Service Provider Presentation Related reasons */
00214     ASC_REASON_SP_PRES_TEMPORARYCONGESTION          = 0x0301,
00215     ASC_REASON_SP_PRES_LOCALLIMITEXCEEDED           = 0x0302
00216 };
00217 
00218 struct T_ASC_RejectParameters
00219 {
00220     T_ASC_RejectParametersResult result;
00221     T_ASC_RejectParametersSource source;
00222     T_ASC_RejectParametersReason reason;
00223 };
00224 
00225 
00226 struct T_ASC_Parameters
00227 {
00228     DIC_UI ourImplementationClassUID;
00229     DIC_SH ourImplementationVersionName;
00230     DIC_UI theirImplementationClassUID;
00231     DIC_SH theirImplementationVersionName;
00232     DUL_ModeCallback *modeCallback;
00233 
00234     DUL_ASSOCIATESERVICEPARAMETERS DULparams;
00235     /*
00236      * DICOM Upper Layer service parameters.  They should only be
00237      * accessed via functions defined below.
00238      */
00239 
00240     long ourMaxPDUReceiveSize;    /* we say what we can receive */
00241     long theirMaxPDUReceiveSize;  /* they say what we can send */
00242 
00243 };
00244 
00245 /*
00246 ** Association structure containing all association specific
00247 ** information.
00248 */
00249 struct T_ASC_Association
00250 {
00251     DUL_ASSOCIATIONKEY *DULassociation;
00252     T_ASC_Parameters *params;
00253 
00254     unsigned short nextMsgID;         /* should be incremented by user */
00255     unsigned long sendPDVLength;  /* max length of PDV to send out */
00256     unsigned char *sendPDVBuffer; /* buffer of size sendPDVLength */
00257 };
00258 
00259 /*
00260 ** Public Function Prototypes
00261 */
00262 
00273 OFCondition ASC_initializeNetwork(
00274     T_ASC_NetworkRole role,
00275     int acceptorPort,
00276     int timeout,
00277     T_ASC_Network ** network,
00278     unsigned long options = 0);
00279 
00284 OFCondition ASC_dropNetwork(T_ASC_Network ** network);
00285 
00286 /*
00287  * Building Association parameters
00288  */
00289 
00290 OFCondition
00291 ASC_createAssociationParameters(
00292     T_ASC_Parameters ** params,
00293     long maxReceivePDUSize);
00294 
00295 OFCondition
00296 ASC_destroyAssociationParameters(
00297     T_ASC_Parameters ** params);
00298 
00299 /* set transport layer type in association parameters */
00300 OFCondition
00301 ASC_setTransportLayerType(
00302     T_ASC_Parameters * params,
00303     OFBool useSecureLayer);
00304 
00305 OFCondition
00306 ASC_setAPTitles(
00307     T_ASC_Parameters * params,
00308     const char* callingAPTitle,
00309     const char* calledAPTitle,
00310     const char* respondingAPTitle);
00311 
00312 OFCondition
00313 ASC_getAPTitles(
00314     T_ASC_Parameters * params,
00315     char* callingAPTitle,
00316     char* calledAPTitle,
00317     char* respondingAPTitle);
00318 
00319 OFCondition
00320 ASC_getApplicationContextName(
00321     T_ASC_Parameters * params,
00322     char* applicationContextName);
00323 
00324 OFCondition
00325 ASC_setPresentationAddresses(
00326     T_ASC_Parameters * params,
00327     const char* callingPresentationAddress,
00328     const char* calledPresentationAddress);
00329 
00330 OFCondition
00331 ASC_getPresentationAddresses(
00332     T_ASC_Parameters * params,
00333     char* callingPresentationAddress,
00334     char* calledPresentationAddress);
00335 
00336 OFCondition
00337 ASC_getRejectParameters(
00338     T_ASC_Parameters * params,
00339     T_ASC_RejectParameters * rejectParameters);
00340 
00341 OFString&
00342 ASC_printRejectParameters(
00343     OFString& str,
00344     T_ASC_RejectParameters *rej);
00345 
00346 OFCondition
00347 ASC_addPresentationContext(
00348     T_ASC_Parameters * params,
00349     T_ASC_PresentationContextID presentationContextID,
00350     const char* abstractSyntax,
00351     const char* transferSyntaxList[],
00352     int transferSyntaxListCount,
00353     T_ASC_SC_ROLE proposedRole = ASC_SC_ROLE_DEFAULT);
00354 
00355 int
00356 ASC_countPresentationContexts(
00357     T_ASC_Parameters * params);
00358 
00359 int
00360 ASC_countAcceptedPresentationContexts(
00361     T_ASC_Parameters * params);
00362 
00363 OFCondition
00364 ASC_getPresentationContext(
00365     T_ASC_Parameters * params,
00366     int listPosition,
00367     T_ASC_PresentationContext * presentationContext);
00368 
00369 OFCondition
00370 ASC_acceptPresentationContext(
00371     T_ASC_Parameters * params,
00372     T_ASC_PresentationContextID presentationContextID,
00373     const char* transferSyntax,
00374     T_ASC_SC_ROLE acceptedRole = ASC_SC_ROLE_DEFAULT);
00375 
00376 OFCondition
00377 ASC_acceptContextsWithPreferredTransferSyntaxes(
00378     T_ASC_Parameters * params,
00379     const char* abstractSyntaxes[], int abstractSyntaxCount,
00380     const char* transferSyntaxes[], int transferSyntaxCount,
00381     T_ASC_SC_ROLE acceptedRole = ASC_SC_ROLE_DEFAULT);
00382 
00383 OFCondition
00384 ASC_acceptContextsWithTransferSyntax(
00385     T_ASC_Parameters * params,
00386     const char* transferSyntax, int abstractSyntaxCount,
00387     const char* abstractSyntaxes[],
00388     T_ASC_SC_ROLE acceptedRole = ASC_SC_ROLE_DEFAULT);
00389 
00390 OFCondition
00391 ASC_refusePresentationContext(
00392     T_ASC_Parameters * params,
00393     T_ASC_PresentationContextID presentationContextID,
00394     T_ASC_P_ResultReason resultReason);
00395 
00396 OFCondition
00397 ASC_findAcceptedPresentationContext(
00398     T_ASC_Parameters * params,
00399     T_ASC_PresentationContextID presentationContextID,
00400     T_ASC_PresentationContext * presentationContext);
00401 
00402 T_ASC_PresentationContextID
00403 ASC_findAcceptedPresentationContextID(
00404     T_ASC_Association *assoc,
00405     const char* abstractSyntax);
00406 
00407 T_ASC_PresentationContextID
00408 ASC_findAcceptedPresentationContextID(
00409     T_ASC_Association *assoc,
00410     const char* abstractSyntax,
00411     const char * transferSyntax);
00412 
00413 /* extended negotiation */
00414 void ASC_getRequestedExtNegList(T_ASC_Parameters* params, SOPClassExtendedNegotiationSubItemList** extNegList);
00415 void ASC_getAcceptedExtNegList(T_ASC_Parameters* params, SOPClassExtendedNegotiationSubItemList** extNegList);
00416 void ASC_setRequestedExtNegList(T_ASC_Parameters* params, SOPClassExtendedNegotiationSubItemList* extNegList);
00417 void ASC_setAcceptedExtNegList(T_ASC_Parameters* params, SOPClassExtendedNegotiationSubItemList* extNegList);
00418 
00419 /* user identity negotiation */
00420 
00421 /* function that returns user identity request structure from association
00422  * parameters.
00423  * @param params - [in] The parameters to read from
00424  * @param usrIdentAC - [out] The result pointer to user identity request
00425  */
00426 void ASC_getUserIdentRQ(T_ASC_Parameters* params, UserIdentityNegotiationSubItemRQ** usrIdentRQ);
00427 
00428 /* function that returns user identity response structure from association
00429  * parameters. Note: For accessing the User Identity response value,
00430  *  it is more convenient to use the function ASC_getCopyOfIdentResponse().
00431  * @param params - [in] The parameters to read from
00432  * @param usrIdentAC - [out] The result pointer to user identity response
00433  * @return none
00434  */
00435 void ASC_getUserIdentAC(T_ASC_Parameters* params, UserIdentityNegotiationSubItemAC** usrIdentAC);
00436 
00444 OFCondition
00445 ASC_setIdentRQUserPassword(
00446     T_ASC_Parameters * params,
00447     const OFString& userName,
00448     const OFString& password,
00449     const OFBool& requestRsp = OFTrue);
00450 
00457 OFCondition
00458 ASC_setIdentRQUserOnly(
00459     T_ASC_Parameters * params,
00460     const OFString& userName,
00461     const OFBool& requestRsp = OFTrue);
00462 
00469 OFCondition
00470 ASC_setIdentRQKerberos(
00471     T_ASC_Parameters * params,
00472     const char* kerbTicket,
00473     const Uint16& length,
00474     const OFBool& requestRsp = OFTrue);
00475 
00482 OFCondition
00483 ASC_setIdentRQSaml(
00484     T_ASC_Parameters * params,
00485     const char* saml,
00486     const Uint16& length,
00487     const OFBool& requestRsp = OFTrue);
00488 
00489 
00496 OFCondition ASC_setIdentAC(
00497     T_ASC_Parameters * params,
00498     const char* response,
00499     const Uint16& length );
00500 
00513 void
00514 ASC_getCopyOfIdentResponse(T_ASC_Parameters * params,
00515                            void*& buffer,
00516                            unsigned short& bufferLen);
00517 
00518 /* TLS/SSL */
00519 
00520 /* get peer certificate from open association */
00521 unsigned long ASC_getPeerCertificateLength(T_ASC_Association *assoc);
00522 unsigned long ASC_getPeerCertificate(T_ASC_Association *assoc, void *buf, unsigned long bufLen);
00523 
00524 /* set new transport layer object */
00525 OFCondition
00526 ASC_setTransportLayer(T_ASC_Network *network, DcmTransportLayer *newLayer, int takeoverOwnership);
00527 
00528 enum ASC_associateType
00529 {
00530     ASC_ASSOC_RQ,
00531     ASC_ASSOC_AC,
00532     ASC_ASSOC_RJ
00533 };
00534 
00535 OFString&
00536 ASC_dumpParameters(OFString& str, T_ASC_Parameters * param, ASC_associateType dir);
00537 
00538 OFString&
00539 ASC_dumpConnectionParameters(OFString& str, T_ASC_Association *association);
00540 
00541 void ASC_activateCallback(T_ASC_Parameters *params, DUL_ModeCallback *cb);
00542 
00543 /*
00544  * Association Inquiries
00545  */
00546 
00547 OFBool
00548 ASC_associationWaiting(T_ASC_Network * network, int timeout);
00549 
00550 OFBool
00551 ASC_dataWaiting(T_ASC_Association * association, int timeout);
00552 
00553 OFBool
00554 ASC_selectReadableAssociation(
00555     T_ASC_Association* assocs[],
00556     int assocCount, int timeout);
00557 
00558 /*
00559  * Association Messages
00560  */
00561 
00562 OFCondition
00563 ASC_requestAssociation(
00564     T_ASC_Network * network,
00565     T_ASC_Parameters * params,  /* params will be saved
00566          * in the association
00567          * structure */
00568     T_ASC_Association ** association,
00569     void **associatePDU=NULL,
00570     unsigned long *associatePDUlength=NULL);
00571 
00572 OFCondition
00573 ASC_receiveAssociation(
00574     T_ASC_Network * network,
00575     T_ASC_Association ** association,
00576     long maxReceivePDUSize,
00577     void **associatePDU=NULL,
00578     unsigned long *associatePDUlength=NULL,
00579     OFBool useSecureLayer=OFFalse,
00580     DUL_BLOCKOPTIONS block=DUL_BLOCK,
00581     int timeout=0);
00582 
00583 OFCondition
00584 ASC_acknowledgeAssociation(
00585     T_ASC_Association * assoc,
00586     void **associatePDU=NULL,
00587     unsigned long *associatePDUlength=NULL);
00588 
00589 OFCondition
00590 ASC_rejectAssociation(
00591     T_ASC_Association * association,
00592     T_ASC_RejectParameters * rejectParameters,
00593     void **associatePDU=NULL,
00594     unsigned long *associatePDUlength=NULL);
00595 
00596 OFCondition
00597 ASC_releaseAssociation(T_ASC_Association * association);
00598 
00599 OFCondition
00600 ASC_acknowledgeRelease(T_ASC_Association * association);
00601 
00602 OFCondition
00603 ASC_abortAssociation(T_ASC_Association * association);
00604 
00605 OFCondition
00606 ASC_dropSCPAssociation(T_ASC_Association * association, int timeout = DUL_TIMEOUT);
00607 
00608 OFCondition
00609 ASC_dropAssociation(T_ASC_Association * association);
00610 
00611 OFCondition
00612 ASC_destroyAssociation(T_ASC_Association ** association);
00613 
00615 void
00616 ASC_printRejectParameters(
00617     FILE *f,
00618     T_ASC_RejectParameters *rej);
00619 
00621 void
00622 ASC_printRejectParameters(
00623     STD_NAMESPACE ostream& out,
00624     T_ASC_RejectParameters *rej);
00625 
00630 void
00631 ASC_dumpParameters(T_ASC_Parameters * params, STD_NAMESPACE ostream& outstream);
00632 
00634 void
00635 ASC_dumpPresentationContext(T_ASC_PresentationContext * presentationContext, STD_NAMESPACE ostream& outstream);
00636 
00641 void
00642 ASC_dumpConnectionParameters(T_ASC_Association *association, STD_NAMESPACE ostream& outstream);
00643 
00644 
00645 #endif
00646 
00647 /*
00648 ** CVS Log
00649 ** $Log: assoc.h,v $
00650 ** Revision 1.33  2010-12-01 08:26:10  joergr
00651 ** Added OFFIS copyright header (beginning with the year 1994).
00652 **
00653 ** Revision 1.32  2010-10-14 13:17:21  joergr
00654 ** Updated copyright header. Added reference to COPYRIGHT file.
00655 **
00656 ** Revision 1.31  2010-10-01 12:25:29  uli
00657 ** Fixed most compiler warnings in remaining modules.
00658 **
00659 ** Revision 1.30  2010-08-26 09:26:41  joergr
00660 ** Fixed incorrect behavior of association acceptors during SCP/SCU role
00661 ** selection negotiation.
00662 **
00663 ** Revision 1.29  2009-11-18 11:53:58  uli
00664 ** Switched to logging mechanism provided by the "new" oflog module.
00665 **
00666 ** Revision 1.28  2008-10-07 09:07:47  onken
00667 ** Added code for accessing user identity from the server's side.
00668 **
00669 ** Revision 1.27  2008-04-17 15:28:33  onken
00670 ** Reworked and extended User Identity Negotiation code.
00671 **
00672 ** Revision 1.26  2007-09-07 08:49:12  onken
00673 ** Added basic support for Extended Negotiation of User Identity.
00674 **
00675 ** Revision 1.25  2006/08/15 16:04:29  meichel
00676 ** Updated the code in module dcmnet to correctly compile when
00677 **   all standard C++ classes remain in namespace std.
00678 **
00679 ** Revision 1.24  2005/12/08 16:02:06  meichel
00680 ** Changed include path schema for all DCMTK header files
00681 **
00682 ** Revision 1.23  2004/07/15 08:10:45  meichel
00683 ** Added optional timeout parameter to ASC_dropSCPAssociation().
00684 **
00685 ** Revision 1.22  2004/04/07 10:22:09  meichel
00686 ** Added optional parameter to ASC_initializeNetwork that allows to pass
00687 **   the DUL_FULLDOMAINNAME option to the DUL layer
00688 **
00689 ** Revision 1.21  2004/02/25 12:31:15  meichel
00690 ** Added global option flag for compatibility with very old DCMTK releases in the
00691 **   DICOM upper layer and ACSE code. Default is automatic handling, which should
00692 **   work in most cases.
00693 **
00694 ** Revision 1.20  2003/06/10 13:42:07  meichel
00695 ** Replaced unnamed C style structs by C++ declarations
00696 **
00697 ** Revision 1.19  2002/07/10 11:43:55  meichel
00698 ** Replaced dcmnet specific definitions for implementation class UID and
00699 **   version name by the constants defined in dcmdata.
00700 **
00701 ** Revision 1.18  2001/11/27 09:54:33  wilkens
00702 ** Updated storescp. 6 new options (--output-directory, --sort-conc-studies,
00703 ** --exec-on-reception, --exec-on-eostudy, --rename-on-eostudy, and
00704 ** --eostudy-timeout) implemented (requirements from GO-Kard).
00705 **
00706 ** Revision 1.17  2001/10/12 10:18:25  meichel
00707 ** Replaced the CONDITION types, constants and functions in the dcmnet module
00708 **   by an OFCondition based implementation which eliminates the global condition
00709 **   stack.  This is a major change, caveat emptor!
00710 **
00711 ** Revision 1.16  2001/09/28 13:23:46  joergr
00712 ** Added forward declaration of "ostream" to keep gcc 3.0 quiet.
00713 **
00714 ** Revision 1.15  2000/10/10 12:06:05  meichel
00715 ** Added version of function ASC_printRejectParameters that takes
00716 **   an STD_NAMESPACE ostream& instead of a FILE*
00717 **
00718 ** Revision 1.14  2000/08/10 14:50:52  meichel
00719 ** Added initial OpenSSL support.
00720 **
00721 ** Revision 1.13  2000/06/07 13:56:20  meichel
00722 ** Output stream now passed as mandatory parameter to ASC_dumpParameters.
00723 **
00724 ** Revision 1.12  2000/06/07 08:57:21  meichel
00725 ** dcmnet ACSE routines now allow to retrieve a binary copy of the A-ASSOCIATE
00726 **   RQ/AC/RJ PDUs, e.g. for logging purposes.
00727 **
00728 ** Revision 1.11  2000/05/30 13:07:41  joergr
00729 ** Added a condition value to report the external request for a shutdown of
00730 ** the application (used for imagectn).
00731 **
00732 ** Revision 1.10  1999/09/06 13:28:31  meichel
00733 ** Enhanced max receive PDU range to 4-128K.
00734 **
00735 ** Revision 1.9  1999/04/26 17:20:55  meichel
00736 ** Added new "transfer syntax aware" variant of the dcmnet function
00737 **   ASC_findAcceptedPresentationContextID. This variant tries to find an
00738 **   accepted presentation context that matches both abstract and transfer syntax.
00739 **
00740 ** Revision 1.8  1999/04/21 13:01:23  meichel
00741 ** Increased max. number of transfer syntaxes that
00742 **   can be managed in an A-ASSOCIATE packet from 25 to 50.
00743 **
00744 ** Revision 1.7  1999/04/19 08:39:27  meichel
00745 ** Added experimental support for extended SOP class negotiation.
00746 **
00747 ** Revision 1.6  1997/08/05 07:38:08  andreas
00748 ** Corrected error in DUL finite state machine
00749 ** SCPs shall close sockets after the SCU have closed the socket in
00750 ** a normal association release. Therfore, an ARTIM timer is described
00751 ** in DICOM part 8 that is not implemented correctly in the
00752 ** DUL. Since the whole DUL finite state machine is affected, we
00753 ** decided to solve the proble outside the fsm. Now it is necessary to call the
00754 ** ASC_DropSCPAssociation() after the calling ASC_acknowledgeRelease().
00755 **
00756 ** Revision 1.5  1997/07/21 08:40:08  andreas
00757 ** - Replace all boolean types (BOOLEAN, CTNBOOLEAN, DICOM_BOOL, BOOL)
00758 **   with one unique boolean type OFBool.
00759 **
00760 ** Revision 1.4  1997/05/05 13:05:53  meichel
00761 ** Removed unused constant DICOM_MAXPRESENTATIONCONTEXTS.
00762 **
00763 ** Revision 1.3  1997/05/05 10:30:08  meichel
00764 ** Fixed bugs related to association negotiation in the DICOM upper layer module.
00765 ** Added application tests/assctest.cc to examine handling of large A-ASSOCIATE
00766 ** PDUs. See CHANGES file for details.
00767 **
00768 ** Revision 1.2  1996/04/25 16:06:27  hewett
00769 ** Replaced declarations of DIC_UL with unsigned long.
00770 **
00771 ** Revision 1.1.1.1  1996/03/26 18:38:44  hewett
00772 ** Initial Release.
00773 **
00774 **
00775 */


Generated on 6 Jan 2011 for OFFIS DCMTK Version 3.6.0 by Doxygen 1.5.1