< Previous by Date Date Index Next by Date >
  Thread Index Next in Thread >

[reSIProcate] Managing multiple UA registrations with single DUM


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
bkovar@xxxxxxxxx