7 #ifndef TECGRAF_SDK_OPENBUS_OPENBUS_CONTEXT_H_
8 #define TECGRAF_SDK_OPENBUS_OPENBUS_CONTEXT_H_
10 #include "openbus/ORBInitializer.hpp"
11 #include "openbus/decl.hpp"
13 #include "credentialC.h"
14 #include "access_controlC.h"
15 #include "offer_registryC.h"
16 #include "data_exportC.h"
18 #include <tao/LocalObject.h>
20 #include <boost/function.hpp>
21 #ifdef OPENBUS_SDK_MULTITHREAD
22 #include <boost/thread.hpp>
24 #include <boost/shared_ptr.hpp>
30 namespace idl_cr = tecgraf::openbus::core::v2_0::credential;
31 namespace idl_or = tecgraf::openbus::core::v2_0::services::offer_registry;
32 namespace idl_data_export = tecgraf::openbus::core::v2_0::data_export;
34 namespace interceptors
37 struct ClientInterceptor;
51 namespace access_control
54 inline bool operator==(
const LoginInfo &lhs,
const LoginInfo &rhs)
56 return lhs.id.in() == rhs.id.in()
57 || (lhs.id.in() && rhs.id.in() && !std::strcmp(lhs.id.in(), rhs.id.in()));
60 inline bool operator!=(
const LoginInfo &lhs,
const LoginInfo &rhs)
65 inline bool operator==(
const LoginInfoSeq &lhs,
const LoginInfoSeq &rhs)
67 if (lhs.length() != rhs.length())
71 for (CORBA::ULong i(0); i < rhs.length(); ++i)
81 inline bool operator!=(
const LoginInfoSeq &lhs,
const LoginInfoSeq &rhs)
94 struct OPENBUS_SDK_DECL InvalidEncodedStream :
public std::exception
96 InvalidEncodedStream();
97 InvalidEncodedStream(
const std::string &msg);
98 ~InvalidEncodedStream() throw();
99 const
char *what() const throw()
182 std::memset(_signedCallChain.signature,
' ', idl::EncryptedBlockSize);
185 #ifndef OPENBUS_SDK_TEST
191 const std::string &target,
192 const idl_ac::LoginInfoSeq &originators,
193 const idl_ac::LoginInfo &caller,
194 const idl_cr::SignedCallChain &chain)
195 : _busid(busid), _target(target), _originators(originators),
196 _caller(caller), _signedCallChain(chain)
200 CallerChain(
const std::string &busid,
201 const std::string &target,
202 const idl_ac::LoginInfoSeq &originators,
203 const idl_ac::LoginInfo &caller)
204 : _busid(busid), _target(target), _originators(originators),
207 std::memset(_signedCallChain.signature,
' ', idl::EncryptedBlockSize);
212 idl_ac::LoginInfoSeq _originators;
213 idl_ac::LoginInfo _caller;
214 idl_cr::SignedCallChain _signedCallChain;
216 bool is_legacy()
const;
218 friend class OpenBusContext;
219 friend struct openbus::interceptors::ClientInterceptor;
220 friend inline bool operator==(CallerChain
const &lhs,
221 CallerChain
const &rhs)
223 return lhs._busid == rhs._busid && lhs._originators == rhs._originators
224 && lhs._caller == rhs._caller;
228 inline bool operator!=(CallerChain
const &lhs, CallerChain
const &rhs)
230 return !(lhs == rhs);
288 typedef boost::function<
290 const std::string busId,
291 const std::string loginId,
292 const std::string operation)>
353 std::auto_ptr<Connection> createConnection(
354 const std::string &host,
unsigned short port,
355 const Connection::ConnectionProperties &props =
356 Connection::ConnectionProperties());
507 CallerChain makeChainFor(
const std::string &loginId)
const;
522 CORBA::OctetSeq encodeChain(
const CallerChain chain);
550 CallerChain decodeChain(
const CORBA::OctetSeq &encoded)
const;
578 CORBA::ORB_ptr
orb()
const
583 idl_or::OfferRegistry_ptr getOfferRegistry()
const;
584 idl_ac::LoginRegistry_ptr getLoginRegistry()
const;
595 void orb(CORBA::ORB_ptr o)
600 CORBA::OctetSeq encode_exported_versions(idl_data_export::ExportedVersionSeq,
601 const std::string &tag);
603 std::string decode_exported_versions(
604 const CORBA::OctetSeq &stream,
605 idl_data_export::ExportedVersionSeq_out exported_version_seq)
const;
607 typedef std::map<std::string, Connection *> BusidConnection;
608 #ifdef OPENBUS_SDK_MULTITHREAD
609 mutable boost::mutex _mutex;
611 interceptors::ORBInitializer * _orb_init;
613 Connection *_defaultConnection;
614 BusidConnection _busidConnection;
615 CallDispatchCallback _callDispatchCallback;
618 int &argc,
char **argv);
const std::string target() const
Entidade para a qual a chamada estava destinada.
Definition: OpenBusContext.hpp:141
const idl_ac::LoginInfoSeq & originators() const
Lista de informações de login de todas as entidades que originaram as chamadas nessa cadeia...
Definition: OpenBusContext.hpp:153
boost::function< Connection *(OpenBusContext &context, const std::string busId, const std::string loginId, const std::string operation)> CallDispatchCallback
Callback de despacho de chamadas.
Definition: OpenBusContext.hpp:293
openbus
Definition: Connection.hpp:41
const std::string busid() const
Barramento através do qual as chamadas foram originadas.
Definition: OpenBusContext.hpp:121
Cadeia de chamadas oriundas de um barramento.
Definition: OpenBusContext.hpp:116
Segredo para compartilhamento de autenticação.
Definition: Connection.hpp:121
OPENBUS_SDK_DECL boost::shared_ptr< orb_ctx > ORBInitializer(int &argc, char **argv)
Inicializa um ORB utilizado exclusivamente para chamadas através de barramentos OpenBus.
Definition: OpenBusContext.hpp:51
Definition: OpenBusContext.hpp:41
Conexão para acesso identificado a um barramento.
Definition: Connection.hpp:177
CallerChain()
Construtor default que indica há ausência de uma cadeia.
Definition: OpenBusContext.hpp:180
CORBA::ORB_ptr orb() const
Definition: OpenBusContext.hpp:578
Permite controlar o contexto das chamadas de um ORB para acessar informações que identificam essas ch...
Definition: OpenBusContext.hpp:262
const idl_ac::LoginInfo & caller() const
Informação de login da entidade que realizou a última chamada da cadeia.
Definition: OpenBusContext.hpp:162