Design: Limit Response Sizes: Difference between revisions

From OPeNDAP Documentation
⧼opendap2-jumptonavigation⧽
No edit summary
Line 7: Line 7:
=== libdap implementation ===
=== libdap implementation ===


In the class DDS add ''set_'' and ''get_response_limit()'' methods. The ''set-response_limit()'' method will be called by the BES in the ''void
In the class DDS add ''set_'' and ''get_response_limit()'' methods. The ''set-response_limit()'' method will be called by the BES in the ''void BESDataResponseHandler::execute( BESDataHandlerInterface &dhi )'' or equivalent method.
BESDataResponseHandler::execute( BESDataHandlerInterface &dhi )'' or equivalent method.


In the ''libdap:ResponseBuilder'' class
In the ''libdap:ResponseBuilder'' class in the ''send_data()'' methods check this value against the computed/estimated response size.
 
In DDS implement a ''get_estimated_response_size()'' method. When called, evaluated the DDS and return the estimated number of bytes if a response were to be requested with the given constraint (which may be null). Use this method in the ''ResponseBuilder::send_data()'' methods.
 
=== If a response is not allowed ===
 
Return an Error. ''ResponseBuilder::send_data()'' can throw an exception just as for other errors.

Revision as of 19:49, 30 May 2011

Limiting the response sizes for different classes of users will need to be a configuration parameter. This will be set in the OLFS. Users will initially be divided into two groups: authenticated and unauthenticated. Authenticated users will have unlimited access capability while unauthenticated users will only be allowed to transfer up to N bytes of data.

OLFS and BES communication

Use a SetContext element in the GetData request.

libdap implementation

In the class DDS add set_ and get_response_limit() methods. The set-response_limit() method will be called by the BES in the void BESDataResponseHandler::execute( BESDataHandlerInterface &dhi ) or equivalent method.

In the libdap:ResponseBuilder class in the send_data() methods check this value against the computed/estimated response size.

In DDS implement a get_estimated_response_size() method. When called, evaluated the DDS and return the estimated number of bytes if a response were to be requested with the given constraint (which may be null). Use this method in the ResponseBuilder::send_data() methods.

If a response is not allowed

Return an Error. ResponseBuilder::send_data() can throw an exception just as for other errors.