[reSIProcate] Managing multiple UA registrations with single DUM
- From: "Kovar, William (Bill)" <bkovar@xxxxxxxxx>
- Date: Wed, 19 Apr 2006 10:04:59 -0400
In the test program
BasicCall.cpp, the following 2 different UA's are created on 2 different
Dum's
TestUac
uac;
dumUac->setInviteSessionHandler(&uac);
dumUac->setClientRegistrationHandler(&uac);
dumUac->addOutOfDialogHandler(OPTIONS, &uac);
TestUas
uas(&bHangupAt);
dumUas->setClientRegistrationHandler(&uas);
dumUas->setInviteSessionHandler(&uas);
dumUas->addOutOfDialogHandler(OPTIONS, &uas);
Then there's some
User specific credential stuff set just before creating a Register
message.
If I'm only using 1
DUM and I want to register/unregister multiple UA's and manage them, how would I
do it??
- Do I have to
persist every ClientRegisterHandle that comes back from
ClientRegistrationHandler::onSuccess(...)
- Do I also have to
persist authorization stuff?
Basically, what from
the lines below need to be reset to some persisted, user specifc data on the
same UA before I can send a message out, i.e. uacAuth, uacMasterProfile, uac_dsf
and all of the pDum-> calls.
I seem to be at a
loss as to what parts of one UA and one DUM need to change for each message
sent/received for a particular URI I've registered as a UA
SharedPtr<MasterProfile>
uacMasterProfile(new MasterProfile);
auto_ptr<ClientAuthManager>
uacAuth(new
ClientAuthManager);
pDum->setMasterProfile(uacMasterProfile);
pDum->setClientAuthManager(uacAuth);
pDum->setInviteSessionHandler(&uac);
pDum->setClientRegistrationHandler(&uac);
pDum->addOutOfDialogHandler(OPTIONS,
&uac);
auto_ptr<AppDialogSetFactory> uac_dsf(new
ICAppDialogSetFactory);
pDum->setAppDialogSetFactory(uac_dsf);
// set the
proxy/registrar
pDum->getMasterProfile()->setOutboundProxy(proxyURI);
//
set registration expiration
time
pDum->getMasterProfile()->setDefaultRegistrationTime(70);
pDum->getMasterProfile()->setDigestCredential(uaAor.uri().host(),
res->Id, res->pwd);
SharedPtr<SipMessage> regMessage =
pDum->makeRegistration(uaAor,
new
testAppDialogSet(*pDum, "UA(Registration)"));
The various
dumUa(sc)-setXXXXHandler() methods seem to only manage one instance of each of
these handlers, meaning they need to be reset when I am acting as a different
UA.
Bill Kovar