00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef response_h
00027 #define response_h
00028
00029 #include <cstdio>
00030 #include <string>
00031
00032 #ifndef _debug_h
00033 #include "debug.h"
00034 #endif
00035
00036 using namespace std;
00037
00038 #include "ObjectType.h"
00039 #include "InternalErr.h"
00040
00041 namespace libdap
00042 {
00043
00057 class Response
00058 {
00059 private:
00061 FILE *d_stream;
00063 ObjectType d_type;
00065 string d_version;
00067 string d_protocol;
00069 int d_status;
00070
00071 protected:
00074 Response()
00075 {}
00076 Response(const Response &)
00077 {}
00078 Response &operator=(const Response &)
00079 {
00080 throw InternalErr(__FILE__, __LINE__, "Unimplemented assignment");
00081 }
00083
00084 public:
00092 Response(FILE *s, int status = 0) : d_stream(s), d_type(unknown_type),
00093 d_version("dods/0.0"), d_protocol("2.0"),
00094 d_status(status)
00095 { }
00096
00098 virtual ~Response()
00099 {
00100 if (d_stream)
00101 fclose(d_stream);
00102 }
00103
00106 virtual int get_status() const
00107 {
00108 return d_status;
00109 }
00110 virtual FILE *get_stream() const
00111 {
00112 return d_stream;
00113 }
00114 virtual ObjectType get_type() const
00115 {
00116 return d_type;
00117 }
00118 virtual string get_version() const
00119 {
00120 return d_version;
00121 }
00122 virtual string get_protocol() const
00123 {
00124 return d_protocol;
00125 }
00127
00130 virtual void set_status(int s)
00131 {
00132 d_status = s;
00133 }
00134 virtual void set_stream(FILE *s)
00135 {
00136 d_stream = s;
00137 }
00138 virtual void set_type(ObjectType o)
00139 {
00140 d_type = o;
00141 }
00142 virtual void set_version(const string &v)
00143 {
00144 d_version = v;
00145 }
00146 virtual void set_protocol(const string &p)
00147 {
00148 d_protocol = p;
00149 }
00151 };
00152
00153 }
00154
00155 #endif // response_h