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 <stdio.h>
00030
00031 #ifndef _debug_h
00032 #include "debug.h"
00033 #endif
00034
00035 using namespace std;
00036
00050 class Response
00051 {
00052 private:
00054 FILE *d_stream;
00056 ObjectType d_type;
00058 string d_version;
00060 string d_protocol;
00062 int d_status;
00063
00064 protected:
00067 Response()
00068 {}
00069 Response(const Response &)
00070 {}
00071 Response &operator=(const Response &)
00072 {
00073 throw InternalErr(__FILE__, __LINE__, "Unimplemented assignment");
00074 }
00076
00077 public:
00085 Response(FILE *s, int status = 0) : d_stream(s), d_type(unknown_type),
00086 d_version("dods/0.0"), d_protocol("2.0"),
00087 d_status(status)
00088 { }
00089
00091 virtual ~Response()
00092 {
00093 if (d_stream)
00094 fclose(d_stream);
00095 }
00096
00099 virtual int get_status() const
00100 {
00101 return d_status;
00102 }
00103 virtual FILE *get_stream() const
00104 {
00105 return d_stream;
00106 }
00107 virtual ObjectType get_type() const
00108 {
00109 return d_type;
00110 }
00111 virtual string get_version() const
00112 {
00113 return d_version;
00114 }
00115 virtual string get_protocol() const
00116 {
00117 return d_protocol;
00118 }
00120
00123 virtual void set_status(int s)
00124 {
00125 d_status = s;
00126 }
00127 virtual void set_stream(FILE *s)
00128 {
00129 d_stream = s;
00130 }
00131 virtual void set_type(ObjectType o)
00132 {
00133 d_type = o;
00134 }
00135 virtual void set_version(const string &v)
00136 {
00137 d_version = v;
00138 }
00139 virtual void set_protocol(const string &p)
00140 {
00141 d_protocol = p;
00142 }
00144 };
00145
00146 #endif // response_h