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 protected:
00139
00140 TR1::shared_ptr <saga::impl::object> get_impl (void) const
00141 {
00142 return impl_;
00143 }
00144
00145 explicit object (saga::impl::object * init);
00146 explicit object (TR1::shared_ptr<saga::impl::object> init);
00148
00149 public:
00154 object();
00155
00160 saga::object::type get_type (void) const;
00161
00166 saga::uuid get_id (void) const;
00167
00172 saga::session get_session (void) const;
00173
00178 saga::object clone() const;
00179
00180 };
00181
00183
00184 SAGA_EXPORT std::string get_object_type_name(saga::object::type t);
00186
00187 }
00189
00190
00191 #if defined(BOOST_MSVC)
00192 # pragma warning(pop)
00193 #endif
00194
00195 #endif // SAGA_SAGA_OBJECT_HPP
00196