00001
00002
00003
00004
00005
00006
00007
00008 #ifndef SAGA_SAGA_OBJECT_HPP
00009 #define SAGA_SAGA_OBJECT_HPP
00010
00011 #include <saga/saga/util.hpp>
00012 #include <saga/saga/base.hpp>
00013
00014
00015 #if defined(BOOST_MSVC)
00016 #pragma warning(push)
00017 #pragma warning(disable: 4251 4231 4275 4660)
00018 #endif
00019
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00063 namespace saga
00064 {
00069 class SAGA_EXPORT object
00070 {
00071 public:
00076 enum type
00077 {
00078 Unknown = -1,
00079 Exception = 1,
00080 URL = 2,
00081 Buffer = 3,
00082 Session = 4,
00083 Context = 5,
00084 Task = 6,
00085 TaskContainer = 7,
00086 Metric = 8,
00087 NSEntry = 9,
00088 NSDirectory = 10,
00089 IOVec = 11,
00090 File = 12,
00091 Directory = 13,
00092 LogicalFile = 14,
00093 LogicalDirectory = 15,
00094 JobDescription = 16,
00095 JobService = 17,
00096 Job = 18,
00097 JobSelf = 19,
00098 StreamService = 20,
00099 Stream = 21,
00100 Parameter = 22,
00101 RPC = 23,
00102
00103
00104 Msg = 24,
00105 Endpoint = 25,
00106
00107
00108 Advert = 26,
00109 AdvertDirectory = 27,
00110
00111
00112 ServiceDescription = 28,
00113 ServiceDiscoverer = 29,
00114 ServiceData = 30,
00115
00116
00117 CPRJobDescription = 31,
00118 CPRJobService = 32,
00119 CPRJob = 33,
00120 CPRJobSelf = 34,
00121 CPRCheckpoint = 35,
00122 CPRDirectory = 36
00123 };
00124
00125 private:
00127
00128 TR1::shared_ptr <saga::impl::object> impl_;
00129
00130 friend struct impl::runtime;
00131 friend class attribute;
00132 friend class adaptors::attribute;
00133 friend class monitorable;
00134 friend class permissions;
00136
00137 public:
00138 typedef saga::impl::object implementation_base_type;
00139
00140 protected:
00142
00143 TR1::shared_ptr <saga::impl::object> get_impl (void) const
00144 {
00145 return impl_;
00146 }
00147
00148 explicit object (saga::impl::object * init);
00149 explicit object (TR1::shared_ptr<saga::impl::object> init);
00151
00152 public:
00157 object();
00158
00163 saga::object::type get_type (void) const;
00164
00169 saga::uuid get_id (void) const;
00170
00175 saga::session get_session (void) const;
00176
00181 saga::object clone() const;
00182
00183 };
00184
00186
00187 SAGA_EXPORT std::string get_object_type_name(saga::object::type t);
00189
00190 }
00192
00193
00194 #if defined(BOOST_MSVC)
00195 # pragma warning(pop)
00196 #endif
00197
00198 #endif // SAGA_SAGA_OBJECT_HPP
00199