[Gdal-dev] Re: OGR Close Datasource?

Charlie Savage cfis at interserv.com
Wed Sep 21 12:25:40 EDT 2005


No problem, thought I'd ask though.  I don't think its worth doing in 
the SWIG bindings because you end up with two reference counts - one in 
SWIG and one for shared datasources in OGR.  Not sure how much this 
problem would actually occur in real life.

Charlie

Frank Warmerdam wrote:
> On 9/21/05, Charlie Savage <cfis at interserv.com> wrote:
>> Wondering if it would make sense to introduce the concept of "closing" a
>> datasource to the OGR API as a distinct thing from "destroying" a data
>> source object?
>>
>> I bring this up because I run into a problem with a test script in Ruby:
>>
>> 1.  Create temporary csv data source
>> 2.  Do some stuff to it
>> 3.  At the end of the test, delete the temporary data source
> 
> Charlie,
> 
> I am guessing that you want an explicit concept of Close() on the
> C++ OGRDataSource object, is that right?  That is, close the datasource
> regardless of how many references exist on it.  The problem I have with
> this is that closing in all the drivers is currently accomplished in the
> datasource destructors and so it would be a bit job to change all the
> drivers to a separate Close() method.  Especially since then ideally
> the datasource object would gracefully error out in case of accesses
> to a closed data source.
> 
> So, I am against changing the core to include a Close() method.
> 
> However, I don't mind adding a Close() method in ogr.i that just
> decrements the datasource reference count, and destroys it if
> it has dropped to zero.  The downside of this approach is that any
> other variables referring to the datasource that haven't been garbage
> collected will still have a reference and hold open the datasource.
> 
> Sorry...
> 
> PS. In answer to Ari's point, on unix the Destroy method may have
> unlinked files for a datasource but if they are still open they aren't
> really deleted.  Behavior is different on win32 where unlinking an
> in use file will fail.  Generally speaking you should not have a datasource
> open when destroying it as results are undefined.
> 
> Best regards,
> --
> ---------------------------------------+--------------------------------------
> I set the clouds in motion - turn up   | Frank Warmerdam, warmerdam at pobox.com
> light and sound - activate the windows | http://pobox.com/~warmerdam
> and watch the world go round - Rush    | Geospatial Programmer for Rent





More information about the Gdal-dev mailing list