00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef TAO_CONSTRAINT_INTERPRETER_H
00015 #define TAO_CONSTRAINT_INTERPRETER_H
00016 #include "ace/pre.h"
00017
00018 #include "orbsvcs/Trader/Constraint_Nodes.h"
00019 #include "orbsvcs/Trader/Constraint_Visitors.h"
00020 #include "orbsvcs/Trader/Interpreter.h"
00021
00022 #include "orbsvcs/CosTradingS.h"
00023 #include "orbsvcs/CosTradingReposS.h"
00024
00025 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00026
00027 class TAO_Constraint_Evaluator;
00028 class TAO_Constraint_Validator;
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 class TAO_Trading_Serv_Export TAO_Constraint_Interpreter : public TAO_Interpreter
00047 {
00048 public:
00049
00050 TAO_Constraint_Interpreter (const CosTradingRepos::ServiceTypeRepository::TypeStruct& ts,
00051 const char* constraints
00052 ACE_ENV_ARG_DECL)
00053 ACE_THROW_SPEC ((CosTrading::IllegalConstraint,
00054 CORBA::NO_MEMORY));
00055
00056
00057
00058
00059
00060
00061
00062 TAO_Constraint_Interpreter (TAO_Constraint_Validator& validator,
00063 const char* constraints
00064 ACE_ENV_ARG_DECL)
00065 ACE_THROW_SPEC ((CosTrading::IllegalConstraint,
00066 CORBA::NO_MEMORY));
00067
00068
00069 ~TAO_Constraint_Interpreter (void);
00070
00071 CORBA::Boolean evaluate (CosTrading::Offer* offer);
00072
00073 CORBA::Boolean evaluate (TAO_Constraint_Evaluator& evaluator);
00074
00075
00076
00077 };
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093 class TAO_Trading_Serv_Export TAO_Preference_Interpreter : public TAO_Interpreter
00094 {
00095 public:
00096
00097 TAO_Preference_Interpreter (const CosTradingRepos::ServiceTypeRepository::TypeStruct& ts,
00098 const char* preference
00099 ACE_ENV_ARG_DECL)
00100 ACE_THROW_SPEC ((CosTrading::Lookup::IllegalPreference,
00101 CORBA::NO_MEMORY));
00102
00103
00104
00105
00106
00107
00108 TAO_Preference_Interpreter (TAO_Constraint_Validator& validator,
00109 const char* preference
00110 ACE_ENV_ARG_DECL)
00111 ACE_THROW_SPEC ((CosTrading::Lookup::IllegalPreference,
00112 CORBA::NO_MEMORY));
00113
00114
00115 ~TAO_Preference_Interpreter(void);
00116
00117 void order_offer (CosTrading::Offer* offer,
00118 CosTrading::OfferId offer_id = 0);
00119
00120
00121
00122 void order_offer (TAO_Constraint_Evaluator& evaluator,
00123 CosTrading::Offer* offer,
00124 CosTrading::OfferId offer_id = 0);
00125
00126 int remove_offer (CosTrading::Offer*& offer,
00127 CosTrading::OfferId& offer_id);
00128
00129
00130
00131 int remove_offer (CosTrading::Offer*& offer);
00132
00133
00134 size_t num_offers (void);
00135
00136 struct Preference_Info
00137 {
00138
00139 CORBA::Boolean evaluated_;
00140
00141
00142 TAO_Literal_Constraint value_;
00143
00144
00145 CosTrading::OfferId offer_id_;
00146
00147
00148 CosTrading::Offer* offer_;
00149 };
00150
00151 typedef ACE_Unbounded_Queue<Preference_Info> Ordered_Offers;
00152
00153 private:
00154
00155
00156 TAO_Preference_Interpreter (const TAO_Preference_Interpreter&);
00157 TAO_Preference_Interpreter& operator= (const TAO_Preference_Interpreter&);
00158
00159
00160 Ordered_Offers offers_;
00161 };
00162
00163 TAO_END_VERSIONED_NAMESPACE_DECL
00164
00165 #include "ace/post.h"
00166 #endif