OpenBus SDK C++ TAO  2.0.2.0
 Tudo Classes Namespaces Ficheiros Funções Definições de tipos Páginas
Tipos Públicos | Membros públicos | Amigos | Mostrar lista completa dos membros
Referência à classe openbus::OpenBusContext

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< ConnectioncreateConnection (const std::string &host, unsigned short port, const Connection::ConnectionProperties &props=Connection::ConnectionProperties())
 Cria uma conexão para um barramento. Mais...
 
ConnectionsetDefaultConnection (Connection *)
 Define a conexão padrão a ser usada nas chamadas. Mais...
 
ConnectiongetDefaultConnection () const
 Devolve a conexão padrão. Mais...
 
ConnectionsetCurrentConnection (Connection *)
 Define a conexão "Requester" do contexto corrente. Mais...
 
ConnectiongetCurrentConnection () 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_ctxopenbus::ORBInitializer (int &argc, char **argv)
 

Descrição detalhada

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:

Documentação das definições de tipo

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.

Parâmetros
[in]contextGerenciador de contexto do ORB que recebeu a chamada.
[in]busidIdentificação do barramento através do qual a chamada foi feita.
[in]loginIdInformações do login do cliente da chamada.
[in]operationNome da operação sendo chamada.
Retorna
Conexão a ser utilizada para receber a chamada.

Documentação dos métodos

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.

Parâmetros
[in]hostEndereço ou nome de rede onde os serviços núcleo do barramento estão executando.
[in]portPorta onde os serviços núcleo do barramento estão executando.
[in]propsLista 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:
  • legacy.disable: desabilita o suporte a chamadas usando protocolo OpenBus 1.5. Por padrão o suporte está habilitado.
  • legacy.delegate: indica como é preenchido o campo 'delegate' das credenciais enviadas em chamadas usando protocolo OpenBus 1.5. Há duas formas possíveis (o padrão é 'caller'):
    • caller: o campo 'delegate' é preenchido sempre com a entidade do campo 'caller' da cadeia de chamadas.
    • originator: o campo 'delegate' é preenchido sempre com a entidade que originou a cadeia de chamadas, que é o primeiro login do campo 'originators' ou o campo 'caller' quando este é vazio.
Excepções
InvalidPropertyValueO valor de uma propriedade não é válido.
CORBA::Exception
Retorna
Conexão criada.
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:

CallerChain chain(openbusContext.decodeChain(encoded));
if(chain != CallerChain())
// chain é válido
else
// chain é inválido
Parâmetros
encodedO stream de bytes que representa a cadeia.
Retorna
A cadeia de chamadas no formato CallerChain.
Excepções
InvalidEncodedStreamCaso 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.

Parâmetros
encodedStream de bytes contendo a codificação do segredo.
Retorna
Segredo de autenticação compartilhada decodificado.
Excepções
InvalidEncodedStreamCaso 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.

Parâmetros
chainA cadeia a ser codificada.
Retorna
A cadeia codificada em um stream de bytes.
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.

Parâmetros
secretSegredo de autenticação compartilhada a ser codificado.
Retorna
Cadeia codificada em um stream de bytes.
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:

CallerChain chain(connection.getCallerChain())
if(chain != CallerChain())
// chain é válido
else
// chain é inválido
Retorna
Cadeia da chamada em execução.
Connection* openbus::OpenBusContext::getCurrentConnection ( ) const

Devolve a conexão associada ao contexto corrente.

Retorna
Conexão ao barramento associada a thread corrente. OpenBusContext não possui ownership dessa conexão e o mesmo não é transferido para o código de usuário na execução desta função
Connection* openbus::OpenBusContext::getDefaultConnection ( ) const

Devolve a conexão padrão.

Veja operação 'setDefaultConnection'.

Retorna
Conexão definida como conexão padrão. OpenBusContext não possui ownership dessa conexão e o mesmo não é transferido para o código de usuário na execução desta função
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:

CallerChain chain(openbusContext.getCallerChain())
if(chain != CallerChain())
// chain é válido
else
// chain é inválido
Retorna
Cadeia de chamadas associada ao contexto corrente ou uma cadeia 'vazia'.
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.

Parâmetros
chainCadeia 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:

CallerChain chain(openbusContext.makeChainFor(loginId));
if(chain != CallerChain())
// chain é válido
else
// chain é inválido
Parâmetros
loginIdidentificador de login da entidade para a qual deseja-se enviar a cadeia.
Retorna
a cadeia gerada para ser utilizada pela entidade com o login especificado.
Excepções
invalid_loginsCaso 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.

CORBA::ORB_ptr openbus::OpenBusContext::orb ( ) const
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.

Parâmetros
[in]connConexã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.

Parâmetros
[in]connConexã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

A documentação para esta classe foi gerada a partir do seguinte ficheiro: