| 1 | |
| 2 | == FDO IReader !GetConnection Support == |
| 3 | |
| 4 | === Overview === |
| 5 | |
| 6 | The OSGeo !MapGuide web tier architecture is currently designed to hang on to an FDO IReader interface. In such an architecture, when the web tier finally calls the Close() method on the reader, the server doesn't know which FDO connection was released along with the Reader. This makes it difficult to track how many active FDO connections are currently open. Such a limitation is going makes restricting the # of concurrent FDO provider connections and supporting single-threaded providers difficult in !MapGuide. |
| 7 | |
| 8 | With this change, an enhancement will be implemented that would see the FdoIReader interface updated to include a !GetConnection method. The following section defines how this new method will be specified. |
| 9 | |
| 10 | === FdoIReader::!GetConnection === |
| 11 | |
| 12 | The FdoIReader interface will be modified to support a Connection property as follows. All Provider implementations of FdoIReader, FdoIFeatureReader, FdoIScrollableFeatureReader, will be required to implement support for returning the Connection property. No default implementation will be provided. |
| 13 | |
| 14 | {{{ |
| 15 | /// \brief |
| 16 | /// The FdoIFeatureReader interface provides a forward-only, read-only iterator |
| 17 | /// for reading feature data. A reference to an FdoIFeatureReader is returned |
| 18 | /// from the Select and SelectAndLock commands. Because the initial position of the |
| 19 | /// FdoIFeatureReader is prior to the first item, you must call |
| 20 | /// ReadNext to begin accessing any data. |
| 21 | class FdoIReader: public FdoIDisposable |
| 22 | { |
| 23 | public: |
| 24 | /// \brief |
| 25 | /// Retrieves the FdoIConnection associated to the reader object |
| 26 | /// |
| 27 | /// \return |
| 28 | /// Returns the FdoIConnection object attached to the reader object. The |
| 29 | /// returned connection object's reference count will be incremented. |
| 30 | /// Callers are expected to Release the connection once finished with it. |
| 31 | /// |
| 32 | /// \remarks |
| 33 | /// Throws an instance of FdoException if an error occurs. |
| 34 | /// |
| 35 | FDO_API virtual FdoIConnection* GetConnection(void) = 0; |
| 36 | }}} |