📄 client.cc
字号:
#include "hello.h"#ifdef HAVE_UNISTD_H#include <unistd.h>#endif#ifdef _WINDOWS#include <direct.h>#endif#include <mico/security/sl3utils.h>#include <mico/util.h>using namespace std;class CredsObserver : virtual public SL3OMExt::CredentialsDestroyObserver, virtual public CORBA::LocalObject{public: CredsObserver(const wstring& name); virtual char* name(); virtual void create_credentials(const char* id); virtual void relinquish_credentials(const char* id); virtual void destroy_credentials(const char* id);private: wstring name_;};CredsObserver::CredsObserver(const wstring& name) : name_(name){}char*CredsObserver::name(){ return CORBA::string_dup(wstr2str(name_).c_str());}voidCredsObserver::create_credentials(const char* id){ wcout << name_ << " create_credentials: " << id << endl;}voidCredsObserver::relinquish_credentials(const char* id){ wcout << name_ << " relinquish_credentials: " << id << endl;}voidCredsObserver::destroy_credentials(const char* id){ wcout << name_ << " destroy_credentials: " << id << endl;}class InitiatingContextObserver : virtual public SL3OMExt::InitiatingContextDestroyObserver, virtual public CORBA::LocalObject{public: InitiatingContextObserver(const wstring& name); virtual char* name(); virtual void establish_context(TransportSecurity::TargetCredentials_ptr ctx); virtual void close_context(TransportSecurity::TargetCredentials_ptr ctx); virtual void destroy_context(TransportSecurity::TargetCredentials_ptr ctx);private: wstring name_;};InitiatingContextObserver::InitiatingContextObserver(const wstring& name) : name_(name){}char*InitiatingContextObserver::name(){ return CORBA::string_dup(wstr2str(name_).c_str());}voidInitiatingContextObserver::establish_context(TransportSecurity::TargetCredentials_ptr ctx){ wcout << name_ << " establish_context: " << ctx->context_id() << endl;}voidInitiatingContextObserver::close_context(TransportSecurity::TargetCredentials_ptr ctx){ wcout << name_ << " close_context: " << ctx->context_id() << endl;}voidInitiatingContextObserver::destroy_context(TransportSecurity::TargetCredentials_ptr ctx){ wcout << name_ << " destroy_context: " << ctx->context_id() << endl;}intmain (int argc, char *argv[]){ wcout << "client started" << endl; CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); CORBA::Object_var obj = orb->resolve_initial_references ("TransportSecurity::SecurityManager"); TransportSecurity::SecurityManager_var secman = TransportSecurity::SecurityManager::_narrow(obj); assert(!CORBA::is_nil(secman)); TransportSecurity::CredentialsCurator_var curator = secman->credentials_curator(); obj = orb->resolve_initial_references("SL3TCPIP::ArgBuilderFactory"); SL3AQArgs::ArgBuilderFactory_var fact = SL3AQArgs::ArgBuilderFactory::_narrow(obj); assert(!CORBA::is_nil(fact)); SL3TCPIP::TCPIPArgBuilder_var builder = SL3TCPIP::TCPIPArgBuilder::_narrow (fact->create_arg_builder(SL3CM::CU_InitiateOnly)); assert(!CORBA::is_nil(builder)); builder->add_tcpip_initiator_options("localhost", 6789, 6799, 0); //builder->addSupportCSIv1(FALSE); //builder->addSupportCSIv2(TRUE); builder->add_credentials_observer (new CredsObserver(L"ClientCredsObserver_1")); builder->add_credentials_observer (new CredsObserver(L"ClientCredsObserver_2")); builder->add_credentials_observer (new CredsObserver(L"ClientCredsObserver_3")); builder->add_credentials_observer (new CredsObserver(L"ClientCredsObserver_4")); builder->add_initiating_context_observer (new InitiatingContextObserver(L"InitiatingContextObserver_1")); builder->add_initiating_context_observer (new InitiatingContextObserver(L"InitiatingContextObserver_2")); builder->add_initiating_context_observer (new InitiatingContextObserver(L"InitiatingContextObserver_3")); builder->add_initiating_context_observer (new InitiatingContextObserver(L"InitiatingContextObserver_4")); SL3AQArgs::Argument_var arg = builder->reap_args(); TransportSecurity::CredentialsAcquirer_var acquirer = curator->acquire_credentials(arg); TransportSecurity::OwnCredentials_var creds = acquirer->get_credentials(TRUE); char pwd[256], uri[300]; sprintf (uri, "file://%s/hello.ref", getcwd(pwd, 256)); CORBA::Object_var obj2 = orb->string_to_object (uri); HelloWorld_var hello = HelloWorld::_narrow (obj2); if (CORBA::is_nil (hello)) { printf ("oops: could not locate HelloWorld server\n"); exit (1); } hello->hello (); hello->hello (); hello->hello (); hello->hello (); CORBA::String_var id = creds->creds_id(); wcout << L"client remove creds: " << id.in() << endl; curator->remove_credentials(id); wcout << L"client release creds: " << id.in() << endl; curator->release_credentials(id); hello->hello (); hello->hello (); hello->hello (); hello->hello (); orb->destroy(); wcout << "client finished" << endl; return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -