OpendTect  6.3
conn.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: A.H.Bril
8  Date: 21-10-1995
9  Contents: Connections with data providers (Streams, databases)
10 ________________________________________________________________________
11 
12 -*/
13 
14 
15 #include "generalmod.h"
16 #include "dbkey.h"
17 class IOObj;
18 class StreamConn;
19 
28 #define mCloseRollBack true
29 
30 
31 mExpClass(General) Conn
32 {
33 public:
34 
35  virtual ~Conn() { close(); }
36  virtual void close(bool failed=false) {}
37  inline void rollback() { close( mCloseRollBack ); }
38 
39  virtual bool isBad() const = 0;
40  virtual const char* creationMessage() const { return 0; }
41 
42  virtual const char* connType() const = 0;
43  virtual bool forRead() const = 0;
44  virtual bool forWrite() const { return !forRead(); }
45 
46  virtual StreamConn* getStream() { return 0; }
47  inline bool isStream() const
48  { return const_cast<Conn*>(this)->getStream(); }
49 
50  inline Conn* conn() { return gtConn(); }
51  inline const Conn* conn() const { return gtConn(); }
53 
54  const DBKey& linkedTo() const { return ioobjid_; }
55  void setLinkedTo( const DBKey& id ) { ioobjid_ = id; }
56 
57  // to fill 'forread' variables
58  static const bool Read; // true
59  static const bool Write; // false
60 
61 protected:
62 
63  Conn() {}
64 
66 
67  virtual Conn* gtConn() const { return const_cast<Conn*>(this); }
68 
69 };
70 
71 
76 mExpClass(General) XConn : public Conn
77 {
78 
79  friend class IOX;
80 
81 public:
82 
83  XConn() : conn_(0), mine_(true) {}
84  ~XConn() { if ( mine_ ) delete conn_; }
85 
86  virtual bool isBad() const
87  { return conn_ ? conn_->isBad() : true; }
88  virtual const char* creationMessage() const
89  { return conn_ ? conn_->creationMessage() : 0; }
90  virtual bool forRead() const
91  { return conn_ && conn_->forRead(); }
92  virtual bool forWrite() const
93  { return conn_ && conn_->forWrite(); }
94  virtual void close( bool failed=false )
95  { if ( conn_ ) conn_->close(failed); }
96  virtual StreamConn* getStream()
97  { return conn_ ? conn_->getStream() : 0; }
98 
99  void setConn( Conn* c, bool becomesmine=true )
100  { if ( mine_ ) delete conn_;
101  conn_ = c; mine_ = becomesmine; }
102 
103  const char* connType() const { return sType(); }
104  static const char* sType();
105 
106 protected:
107 
108  Conn* conn_;
109  bool mine_;
110 
111  Conn* gtConn() const { return const_cast<Conn*>(conn_); }
112 
113 };
Conn()
Definition: conn.h:63
void setLinkedTo(const DBKey &id)
Definition: conn.h:55
#define mExpClass(module)
Definition: commondefs.h:157
bool mine_
Definition: conn.h:109
Definition: ioobj.h:57
virtual bool isBad() const
Conn * conn_
Definition: conn.h:108
virtual bool isBad() const
Definition: conn.h:86
const Conn * conn() const
Returns the actual connection doing the work.
Definition: conn.h:51
virtual bool forWrite() const
Definition: conn.h:44
virtual bool forRead() const
virtual const char * creationMessage() const
Definition: conn.h:40
virtual bool forWrite() const
Definition: conn.h:92
virtual ~Conn()
Definition: conn.h:35
const char * connType() const
Definition: conn.h:103
Conn * gtConn() const
Definition: conn.h:111
virtual StreamConn * getStream()
Definition: conn.h:46
virtual void close(bool failed=false)
Definition: conn.h:94
virtual bool forRead() const
Definition: conn.h:90
const DBKey & linkedTo() const
Definition: conn.h:54
const char * connType() const
Definition: streamconn.h:54
XConn()
Definition: conn.h:83
static const bool Read
Definition: conn.h:58
Connection implemented in terms of another Conn object.
Definition: conn.h:76
Conn * conn()
Definition: conn.h:50
void rollback()
Definition: conn.h:37
void setConn(Conn *c, bool becomesmine=true)
Definition: conn.h:99
Definition: conn.h:31
virtual StreamConn * getStream()
Definition: conn.h:96
virtual const char * creationMessage() const
Definition: conn.h:88
virtual void close(bool failed=false)
DBKey ioobjid_
Definition: conn.h:65
Definition: iox.h:20
virtual void close(bool failed=false)
Definition: conn.h:36
Full key to any object in the OpendTect data store.
Definition: dbkey.h:36
bool isStream() const
Definition: conn.h:47
static const bool Write
Definition: conn.h:59
virtual Conn * gtConn() const
Definition: conn.h:67
Connection with an underlying iostream.
Definition: streamconn.h:25
virtual StreamConn * getStream()
Definition: streamconn.h:40
~XConn()
Definition: conn.h:84
#define mCloseRollBack
Data connection.
Definition: conn.h:28

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B. V. 2017