/*
*
* Copyright (C) 1996-2019, 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: dcmwlm
*
* Author: Thomas Wilkens
*
* Purpose: Class representing a console engine for basic worklist
* management service class providers based on the file system.
*
*/
#ifndef WlmConsoleEngineFileSystem_h
#define WlmConsoleEngineFileSystem_h
#include "dcmtk/config/osconfig.h"
#include "dcmtk/dcmnet/dimse.h"
class WlmDataSource;
class OFConsoleApplication;
class OFCommandLine;
/** This class encapsulates data structures and operations for a console application that
* can act as a basic worklist management service class provider based on the file system.
*/
class WlmConsoleEngineFileSystem
{
protected:
/// contains application's id string
char rcsid[200];
/// returned character set type
WlmReturnedCharacterSetType opt_returnedCharacterSet;
/// path to database files
OFString opt_dfPath;
/// path to store request files
OFString opt_rfPath;
/// format for request files if stored.
/// Several placeholders can be used by(denoted by #):
/// \#a: calling application entity title of the peer SCU
/// \#c: called application entity title (AE title of worklist SCP application)
/// \#i: process id of the worklist SCP application process handling the request
/// \#p: patient ID if present, otherwise empty string
/// \#t: timestamp in the format YYYYMMDDhhmmssffffff
OFString opt_rfFormat;
/// port on which this application is listening
OFCmdUnsignedInt opt_port;
/// indicates if incoming associations shall be refused or not
OFBool opt_refuseAssociation;
/// indicates if incoming associations shall be refused if no implementation class uid is specified
OFBool opt_rejectWithoutImplementationUID;
/// indicates how many seconds the application is supposed to sleep before handling a find request
OFCmdUnsignedInt opt_sleepBeforeFindReq;
/// indicates how long the application shall sleep after a find
OFCmdUnsignedInt opt_sleepAfterFind;
/// indicates how long the application shall sleep during a find
OFCmdUnsignedInt opt_sleepDuringFind;
/// max PDU size
OFCmdUnsignedInt opt_maxPDU;
/// preferred network transfer syntax
E_TransferSyntax opt_networkTransferSyntax;
/// indicates if find shall fail on an invalid query or not
OFBool opt_failInvalidQuery;
/// indicates if this application is run in single process mode or not
OFBool opt_singleProcess;
/// indicates if this process is called as a child process, used by dcmnet
OFBool opt_forkedChild;
/// indicates how many associations can be accepted at the same time
int opt_maxAssociations;
/// indicates if an expansion of empty sequences in C-Find RQ messages shall take place or not
OFBool opt_noSequenceExpansion;
/// indicates if wl-files which are lacking return type 1 attributes or information in such attributes shall be rejected or not
OFBool opt_enableRejectionOfIncompleteWlFiles;
/// blocking mode for DIMSE operations
T_DIMSE_BlockingMode opt_blockMode;
/// timeout for DIMSE operations
int opt_dimse_timeout;
/// timeout for ACSE operations
int opt_acse_timeout;
/// instance of console application class (for handling command line arguments)
OFConsoleApplication *app;
/// instance of command line class (for handling command line arguments)
OFCommandLine *cmd;
/// number of command line arguments, needed for multiprocess mode on WIN32
int command_argc;
/// complete command line, needed for multiprocess mode on WIN32
char **command_argv;
/// data source which shall be queried on incoming C-Find RQ messages
WlmDataSource *dataSource;
/** Protected undefined copy-constructor. Shall never be called.
* @param Src Source object.
*/
WlmConsoleEngineFileSystem( const WlmConsoleEngineFileSystem &Src );
/** Protected undefined operator=. Shall never be called.
* @param Src Source object.
* @return Reference to this.
*/
WlmConsoleEngineFileSystem &operator=( const WlmConsoleEngineFileSystem &Src );
public:
/** constructor.
* @param argc Number of arguments that were passed to main.
* @param argv Arguments that were passed to main.
* @param applicationName The name of this application.
* @param dataSourcev Object which provides access to the data source.
*/
WlmConsoleEngineFileSystem( int argc, char *argv[], const char *applicationName, WlmDataSource *dataSourcev );
/** destructor
*/
~WlmConsoleEngineFileSystem();
/** Starts providing the implemented service for calling SCUs.
* After having created an instance of this class, this function
* shall be called from main.
* @return Return value that is supposed to be returned from main().
*/
int StartProvidingService();
};
#endif