DYT/Tool/3rdParty_x64/include/dcmtk/dcmnet/scpthrd.h

89 lines
2.8 KiB
C
Raw Normal View History

2024-11-22 15:19:31 +00:00
/*
*
* Copyright (C) 2013, OFFIS e.V.
* All rights reserved. See COPYRIGHT file for details.
*
* This software and supporting documentation were developed by
*
* OFFIS e.V.
* R&D Division Health
* Escherweg 2
* D-26121 Oldenburg, Germany
*
*
* Module: dcmnet
*
* Author: Michael Onken
*
* Purpose: Class for implementing a threaded Service Class Provider worker.
*
*/
#ifndef SCPTHRD_H
#define SCPTHRD_H
#include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */
#include "dcmtk/dcmnet/scp.h"
/** Base class for implementing a DICOM Service Class Provider (SCP) that can serve
* as a worker in a thread pool, by offering functionality to run an association
* from an already accepted TCP/IP connection.
* @warning This class is EXPERIMENTAL. Be careful to use it in production environment.
*/
class DCMTK_DCMNET_EXPORT DcmThreadSCP : public DcmSCP
{
public:
/** Constructor. Initializes internal member variables.
*/
DcmThreadSCP();
/** Virtual destructor, frees internal memory.
*/
virtual ~DcmThreadSCP();
/** Handle an already established (on TCP/IP level) connection.
* This function is used when in a thread pool context where a central
* thread receives TCP/IP connections and starts a DcmSCP worker in order
* to handle the rest of the connection (DICOM negotiation and DIMSE
* messaging).
* @param incomingAssoc the association of the connection.
* @return If listening fails, e.g. because the given association is not
* valid or any serious network error occurs, an error is reported.
* In all other cases, e.g. no presentation contexts could be
* negotiated with the requesting SCU, then EC_Normal is returned.
*/
virtual OFCondition run(T_ASC_Association* incomingAssoc);
/** Get access to the DcmSharedSCPConfig object. The shared configuration can be used
* to provide other SCPs with the same configuration without the need to copy it.
* @return a reference to the DcmSharedSCPConfig object used by this DcmSCP object.
*/
virtual DcmSharedSCPConfig& getSharedConfig();
/** Set the DcmSharedSCPConfig object to use for configuring this DcmSCP object.
* @param config Set the shared configuration to be used (no deep copy is performed).
* @return EC_Normal if configuration can be used, error code otherwise.
*/
virtual OFCondition setSharedConfig(const DcmSharedSCPConfig& config);
private:
/** Private undefined copy constructor. Shall never be called.
* @param src Source object
*/
DcmThreadSCP(const DcmThreadSCP &src);
/** Private undefined assignment operator. Shall never be called.
* @param src Source object
* @return Reference to this
*/
DcmThreadSCP &operator=(const DcmThreadSCP &src);
};
#endif // SCPTHRD_H