Permite controlar o contexto das chamadas de um ORB para acessar informações que identificam essas chamadas em barramentos OpenBus. Mais...
#include <OpenBusContext.hpp>
Derivada de LocalObject.
Tipos Públicos | |
typedef boost::function < Connection *(OpenBusContext &context, const std::string busId, const std::string loginId, const std::string operation)> | CallDispatchCallback |
Callback de despacho de chamadas. Mais... | |
Membros públicos | |
void | onCallDispatch (CallDispatchCallback c) |
Define a callback a ser chamada para determinar a conexão a ser utilizada para receber cada chamada. Mais... | |
CallDispatchCallback | onCallDispatch () const |
Retorna a callback a ser chamada para determinar a conexão a ser utilizada para receber cada chamada. | |
std::auto_ptr< Connection > | createConnection (const std::string &host, unsigned short port, const Connection::ConnectionProperties &props=Connection::ConnectionProperties()) |
Cria uma conexão para um barramento. Mais... | |
Connection * | setDefaultConnection (Connection *) |
Define a conexão padrão a ser usada nas chamadas. Mais... | |
Connection * | getDefaultConnection () const |
Devolve a conexão padrão. Mais... | |
Connection * | setCurrentConnection (Connection *) |
Define a conexão "Requester" do contexto corrente. Mais... | |
Connection * | getCurrentConnection () const |
Devolve a conexão associada ao contexto corrente. Mais... | |
CallerChain | getCallerChain () |
Devolve a cadeia de chamadas à qual a execução corrente pertence. Mais... | |
void | joinChain (const CallerChain &chain=CallerChain()) |
Associa uma cadeia de chamadas ao contexto corrente. Mais... | |
void | exitChain () |
Faz com que nenhuma cadeia de chamadas esteja associada ao contexto corrente. Mais... | |
CallerChain | getJoinedChain () const |
Devolve a cadeia de chamadas associada ao contexto corrente. Mais... | |
CallerChain | makeChainFor (const std::string &loginId) const |
Cria uma cadeia de chamadas para a entidade com o identificador de login especificado. Mais... | |
CORBA::OctetSeq | encodeChain (const CallerChain chain) |
Codifica uma cadeia de chamadas (CallerChain) para um stream de bytes. Mais... | |
CallerChain | decodeChain (const CORBA::OctetSeq &encoded) const |
Decodifica um stream de bytes de uma cadeia para o formato CallerChain. Mais... | |
CORBA::OctetSeq | encodeSharedAuthSecret (const SharedAuthSecret &secret) |
Codifica um segredo de autenticação compartilhada SharedAuthSecret para um stream de bytes. Mais... | |
SharedAuthSecret | decodeSharedAuthSecret (const CORBA::OctetSeq &encoded) |
Decodifica um segredo de autenticação compartilhada SharedAuthSecret a partir de um stream de bytes. Mais... | |
CORBA::ORB_ptr | orb () const |
idl_or::OfferRegistry_ptr | getOfferRegistry () const |
idl_ac::LoginRegistry_ptr | getLoginRegistry () const |
Amigos | |
boost::shared_ptr< orb_ctx > | openbus::ORBInitializer (int &argc, char **argv) |
Permite controlar o contexto das chamadas de um ORB para acessar informações que identificam essas chamadas em barramentos OpenBus.
O contexto de uma chamada pode ser definido pela linha de execução atual do programa em que executa uma chamada, o que pode ser a thread em execução ou mais comumente o 'CORBA::PICurrent' do padrão CORBA. As informações acessíveis através do 'OpenBusContext' se referem basicamente à identificação da origem das chamadas, ou seja, nome das entidades que autenticaram os acessos ao barramento que originaram as chamadas.
A identifcação de chamadas no barramento é controlada através do OpenBusContext através da manipulação de duas abstrações representadas pelas seguintes interfaces:
typedef boost::function< Connection* (OpenBusContext &context, const std::string busId, const std::string loginId, const std::string operation)> openbus::OpenBusContext::CallDispatchCallback |
Callback de despacho de chamadas.
Método a ser implementado pelo objeto de callback a ser chamado quando uma chamada proveniente de um barramento é recebida. Esse método é chamado para determinar a conexão a ser utilizada na validação de cada chamada recebida. Se a conexão informada não estiver conectada ao mesmo barramento indicado pelo parâmetro 'busid', a chamada provavelmente será recusada com um CORBA::NO_PERMISSION{InvalidLogin} pelo fato do login provavelmente não ser válido no barramento da conexão. Como resultado disso o cliente da chamada poderá indicar que o servidor não está implementado corretamente e lançar a exceção CORBA::NO_PERMISSION{InvalidRemote}. Caso alguma exceção ocorra durante a execução do método e não seja tratada, o erro será capturado pelo interceptador e registrado no log.
[in] | context | Gerenciador de contexto do ORB que recebeu a chamada. |
[in] | busid | Identificação do barramento através do qual a chamada foi feita. |
[in] | loginId | Informações do login do cliente da chamada. |
[in] | operation | Nome da operação sendo chamada. |
std::auto_ptr<Connection> openbus::OpenBusContext::createConnection | ( | const std::string & | host, |
unsigned short | port, | ||
const Connection::ConnectionProperties & | props = Connection::ConnectionProperties() |
||
) |
Cria uma conexão para um barramento.
O barramento é indicado por um nome ou endereço de rede e um número de porta, onde os serviços núcleo daquele barramento estão executando.
[in] | host | Endereço ou nome de rede onde os serviços núcleo do barramento estão executando. |
[in] | port | Porta onde os serviços núcleo do barramento estão executando. |
[in] | props | Lista opcional de propriedades que definem algumas configurações sobre a forma que as chamadas realizadas ou validadas com essa conexão são feitas. A seguir são listadas as propriedades válidas:
|
InvalidPropertyValue | O valor de uma propriedade não é válido. |
CORBA::Exception |
CallerChain openbus::OpenBusContext::decodeChain | ( | const CORBA::OctetSeq & | encoded | ) | const |
Decodifica um stream de bytes de uma cadeia para o formato CallerChain.
Espera-se que a stream de bytes esteja codificada em CDR e seja formada por um identificador de versão concatenado com as informações da cadeia. Caso não seja possível decodificar a sequência de octetos passada, essa operação devolve uma cadeia 'vazia' 'default-constructed'.
Para verificar se a cadeia retornada é válida, o seguinte idioma é usado:
encoded | O stream de bytes que representa a cadeia. |
InvalidEncodedStream | Caso o stream de bytes não seja do formato esperado. |
SharedAuthSecret openbus::OpenBusContext::decodeSharedAuthSecret | ( | const CORBA::OctetSeq & | encoded | ) |
Decodifica um segredo de autenticação compartilhada SharedAuthSecret a partir de um stream de bytes.
encoded | Stream de bytes contendo a codificação do segredo. |
InvalidEncodedStream | Caso a stream de bytes não seja do formato esperado. |
CORBA::OctetSeq openbus::OpenBusContext::encodeChain | ( | const CallerChain | chain | ) |
Codifica uma cadeia de chamadas (CallerChain) para um stream de bytes.
Codifica uma cadeia de chamadas em um stream de bytes para permitir a persistência ou transferência da informação. A codificação é realizada em CDR e possui um identificador de versão concatenado com as informações da cadeia. Sendo assim, a stream só será decodificada com sucesso por alguém que entenda esta mesma codificação.
chain | A cadeia a ser codificada. |
CORBA::OctetSeq openbus::OpenBusContext::encodeSharedAuthSecret | ( | const SharedAuthSecret & | secret | ) |
Codifica um segredo de autenticação compartilhada SharedAuthSecret para um stream de bytes.
Codifica um segredo de autenticação compartilhada em um stream de bytes para permitir a persistência ou transferência da informação.
secret | Segredo de autenticação compartilhada a ser codificado. |
void openbus::OpenBusContext::exitChain | ( | ) |
Faz com que nenhuma cadeia de chamadas esteja associada ao contexto corrente.
Remove a associação da cadeia de chamadas ao contexto corrente, fazendo com que todas as chamadas seguintes feitas neste mesmo contexto deixem de fazer parte da cadeia de chamadas associada previamente. Ou seja, todas as chamadas passam a iniciar novas cadeias de chamada.
CallerChain openbus::OpenBusContext::getCallerChain | ( | ) |
Devolve a cadeia de chamadas à qual a execução corrente pertence.
Caso a contexto corrente (e.g. definido pelo 'CORBA::PICurrent') seja o contexto de execução de uma chamada remota oriunda do barramento dessa conexão, essa operação devolve um objeto que representa a cadeia de chamadas do barramento que esta chamada faz parte. Caso contrário, devolve uma cadeia de chamadas 'vazia', representada por um CallerChain 'default-constructed'.
Para verificar se a cadeia retornada é válida, o seguinte idioma é usado:
Connection* openbus::OpenBusContext::getCurrentConnection | ( | ) | const |
Devolve a conexão associada ao contexto corrente.
Connection* openbus::OpenBusContext::getDefaultConnection | ( | ) | const |
Devolve a conexão padrão.
Veja operação 'setDefaultConnection'.
CallerChain openbus::OpenBusContext::getJoinedChain | ( | ) | const |
Devolve a cadeia de chamadas associada ao contexto corrente.
A cadeia de chamadas informada foi associada previamente pela operação joinChain. Caso o contexto corrente não tenha nenhuma cadeia associada, essa operação devolve uma cadeia 'vazia' 'default-constructed'
Para verificar se a cadeia retornada é válida, o seguinte idioma é usado:
void openbus::OpenBusContext::joinChain | ( | const CallerChain & | chain = CallerChain() | ) |
Associa uma cadeia de chamadas ao contexto corrente.
De forma que todas as chamadas remotas seguintes neste mesmo contexto sejam feitas como parte dessa cadeia de chamadas.
chain | Cadeia de chamadas a ser associada ao contexto corrente. A ausência de valor ou uma cadeia 'vazia' implica na utilização da cadeia obtida através de getCallerChain. |
CallerChain openbus::OpenBusContext::makeChainFor | ( | const std::string & | loginId | ) | const |
Cria uma cadeia de chamadas para a entidade com o identificador de login especificado.
Cria uma nova cadeia de chamadas para a entidade especificada, onde o dono da cadeia é a conexão corrente getCurrentConnection() e utiliza-se a cadeia atual getJoinedChain() como a cadeia que se deseja dar seguimento ao encadeamento. O identificador de login especificado deve ser um login atualmente válido para que a operação tenha sucesso. Caso o contexto corrente não tenha nenhuma cadeia associada, essa operação devolve uma cadeia 'vazia' 'default-constructed'.
Para verificar se a cadeia retornada é válida, o seguinte idioma é usado:
loginId | identificador de login da entidade para a qual deseja-se enviar a cadeia. |
invalid_logins | Caso o login especificado seja inválido. |
void openbus::OpenBusContext::onCallDispatch | ( | CallDispatchCallback | c | ) |
Define a callback a ser chamada para determinar a conexão a ser utilizada para receber cada chamada.
Definição de um objeto que implementa uma interface de callback a ser chamada sempre que a conexão receber uma chamada do barramento. Essa callback deve devolver a conexão a ser utilizada para receber a chamada. A conexão utilizada para receber a chamada será a única conexão através da qual novas chamadas aninhadas à chamada recebida poderão ser feitas (veja a operação 'joinChain').
Se o objeto de callback for definido como 'null' ou devolver 'null', a conexão padrão é utilizada para receber a chamada, caso esta esteja definida.
Caso esse atributo seja 'null', nenhum objeto de callback é chamado.
|
inline |
ORB utilizado pela conexão.
Connection* openbus::OpenBusContext::setCurrentConnection | ( | Connection * | ) |
Define a conexão "Requester" do contexto corrente.
Define a conexão "Requester" a ser utilizada em todas as chamadas feitas no contexto atual. Quando 'conn' é 'null' o contexto passa a ficar sem nenhuma conexão associada.
[in] | conn | Conexão a ser associada ao contexto corrente. O 'ownership' da conexão não é transferida para o OpenBusContext, e a conexão deve ser removida do OpenBusContext antes de destruida |
Connection* openbus::OpenBusContext::setDefaultConnection | ( | Connection * | ) |
Define a conexão padrão a ser usada nas chamadas.
Define uma conexão a ser utilizada em chamadas sempre que não houver uma conexão específica definida no contexto atual, como é feito através da operação setCurrentConnection.
[in] | conn | Conexão a ser definida como conexão padrão. Um valor nulo significa nenhuma conexão definida como padrão. A propriedade(ownership) da conexão não é transferida para o OpenBusContext, e a conexão deve ser removida do OpenBusContext antes de destruida |