libdap Updated for version 3.20.10
libdap4 is an implementation of OPeNDAP's DAP protocol.
AlarmHandler.h
1
2// -*- mode: c++; c-basic-offset:4 -*-
3
4// This file is part of libdap, A C++ implementation of the OPeNDAP Data
5// Access Protocol.
6
7// Copyright (c) 2002,2003 OPeNDAP, Inc.
8// Author: James Gallagher <jgallagher@opendap.org>
9//
10// This library is free software; you can redistribute it and/or
11// modify it under the terms of the GNU Lesser General Public
12// License as published by the Free Software Foundation; either
13// version 2.1 of the License, or (at your option) any later version.
14//
15// This library is distributed in the hope that it will be useful,
16// but WITHOUT ANY WARRANTY; without even the implied warranty of
17// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18// Lesser General Public License for more details.
19//
20// You should have received a copy of the GNU Lesser General Public
21// License along with this library; if not, write to the Free Software
22// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23//
24// You can contact OPeNDAP, Inc. at PO Box 112, Saunderstown, RI. 02874-0112.
25
26#ifndef alarm_handler_h
27#define alarm_handler_h
28
29#include <cstdio>
30
31#include <string>
32
33#include "EventHandler.h"
34
35namespace libdap
36{
37
46{
47private:
48 FILE *d_file; // Sink for the Error object.
49 string d_version;
50
51public:
52 // Ensure that d_stream gets initialized...
53 AlarmHandler() : d_file( 0 )
54 {}
55
56 explicit AlarmHandler(FILE *s) : d_file(s)//, d_stream( cout )
57 {}
58
62 explicit AlarmHandler(ostream &) : d_file(0)
63 {}
64
65 virtual ~AlarmHandler()
66 {
67 if( d_file )
68 fclose( d_file ) ;
69 }
70
82 virtual void handle_signal(int signum)
83 {
84 if (signum != SIGALRM)
85 throw Error("SIGALRM handler caught another signal!");
86
87 throw Error("Timeout");
88 }
89
90};
91
92} // namespace libdap
93
94#endif
AlarmHandler(ostream &)
virtual void handle_signal(int signum)
A class for error processing.
Definition Error.h:94
top level DAP object to house generic methods