00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
#ifndef DCMTRANS_H
00035
#define DCMTRANS_H
00036
00037
#include "osconfig.h"
00038
#include "oftypes.h"
00039
#include "dcmlayer.h"
00040
#include "ofstream.h"
00041
00042 BEGIN_EXTERN_C
00043
#ifdef HAVE_UNISTD_H
00044
#include <unistd.h>
00045
#endif
00046
END_EXTERN_C
00047
00052 class DcmTransportConnection
00053 {
00054
public:
00055
00061
DcmTransportConnection(
int openSocket);
00062
00065
virtual ~DcmTransportConnection();
00066
00072
virtual DcmTransportLayerStatus
serverSideHandshake() = 0;
00073
00079
virtual DcmTransportLayerStatus
clientSideHandshake() = 0;
00080
00087
virtual DcmTransportLayerStatus
renegotiate(
const char *newSuite) = 0;
00088
00095
virtual ssize_t
read(
void *buf, size_t nbyte) = 0;
00096
00103
virtual ssize_t
write(
void *buf, size_t nbyte) = 0;
00104
00109
virtual void close() = 0;
00110
00115
virtual unsigned long getPeerCertificateLength() = 0;
00116
00117
00118
00119
00120
00121
00122
00123
00124
virtual unsigned long getPeerCertificate(
void *buf,
unsigned long bufLen) = 0;
00125
00132
virtual OFBool
networkDataAvailable(
int timeout) = 0;
00133
00137
virtual OFBool
isTransparentConnection() = 0;
00138
00143
virtual void dumpConnectionParameters(ostream &out) = 0;
00144
00149
virtual const char *
errorString(DcmTransportLayerStatus code) = 0;
00150
00165
static OFBool
selectReadableAssociation(
DcmTransportConnection *connections[],
int connCount,
int timeout);
00166
00167
protected:
00168
00172 int getSocket() {
return theSocket; }
00173
00174
private:
00175
00177
DcmTransportConnection(
const DcmTransportConnection&);
00178
00180
DcmTransportConnection&
operator=(
const DcmTransportConnection&);
00181
00198
static OFBool
safeSelectReadableAssociation(
DcmTransportConnection *connections[],
int connCount,
int timeout);
00199
00216
static OFBool
fastSelectReadableAssociation(
DcmTransportConnection *connections[],
int connCount,
int timeout);
00217
00219 int theSocket;
00220 };
00221
00222
00225 class DcmTCPConnection:
public DcmTransportConnection
00226 {
00227
public:
00228
00234
DcmTCPConnection(
int openSocket);
00235
00238
virtual ~DcmTCPConnection();
00239
00245
virtual DcmTransportLayerStatus
serverSideHandshake();
00246
00252
virtual DcmTransportLayerStatus
clientSideHandshake();
00253
00260
virtual DcmTransportLayerStatus
renegotiate(
const char *newSuite);
00261
00268
virtual ssize_t
read(
void *buf, size_t nbyte);
00269
00276
virtual ssize_t
write(
void *buf, size_t nbyte);
00277
00282
virtual void close();
00283
00288
virtual unsigned long getPeerCertificateLength();
00289
00290
00291
00292
00293
00294
00295
00296
00297
virtual unsigned long getPeerCertificate(
void *buf,
unsigned long bufLen);
00298
00304
virtual OFBool
networkDataAvailable(
int timeout);
00305
00309
virtual OFBool
isTransparentConnection();
00310
00315
virtual void dumpConnectionParameters(ostream &out);
00316
00321
virtual const char *
errorString(DcmTransportLayerStatus code);
00322
00323
private:
00324
00326
DcmTCPConnection(
const DcmTCPConnection&);
00327
00329
DcmTCPConnection&
operator=(
const DcmTCPConnection&);
00330
00331 };
00332
00333
#endif
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352
00353
00354
00355
00356