Plan de match

Pour minimiser les changements, l'ajout de classes se fait de façon à permettre le fonctionnement de SFLphone tout en ajoutant des composantes.

Selon le schémas de design du nouveau daemon:

CallIDAccountIDMap
==================
1- Création du type AccountID dans account.h (pas global.h) : FAIT : 15 min
2- Création du type CallAccountMap dans managerimpl.h : FAIT: 4 min
3- Initialisation simple d'un CallAccountMap et d'un mutex associé (CallAccountMapMutex) dans ManagerImpl : 2 min.
4- Création des fonctions protégées d'ajout (AssociateCallToAccount), de recherche (GetAccountFromCall) et de suppressions (RemoveCallAccount) et de génération de CALLID (getNewCallID). FAIT: 30 min.
5- Création de la classe Account.

Tests:
- Compilation 
  problème numéro 1: register is a reserved keyword
- AssociateCallToAccount()  a) CALLID déjà existant  [b) account inexistant], c) ok
- GetAccountFromCall()      a) CALLID inexistant,    b) ok
- RemoveCallAccount()       a) CALLID inexistant,    b) ok
fin 10:45 (15 minutes)



Account:
================== (13:00)
1- Création de la map AccountMap (dans managerimpl.h)  : 30 min
2- Création des sous-classes vides SIPAccount et AIXAccount. : 3 min
3- Création de la classes AccountCreator qui permet de créer le SIPAccount et AIXAccount selon un type
4- Création des constante pour les protocoles (SIP_ACCOUNT, AIX_ACCOUNT) dans AccountCreator : 12 min

Tests: 
- Création d'un account PROTOCOL_SIP
- Création d'un account PROTOCOL_AIX
- Ajout dans le AccountMap
- Suppression dans le AccountMap
- Recherche dans le AccountMap a) inexistant, b) existant
   - Retest pour les fonctions AssociateCallToAccount a) inexistant b) existant
                              GetAccountFromCall     a) inexistant b) existant
- Compilation : 15 minute: fin 14:00


Account Configuration:
================== (16:30)
1- Envoit des informations au protocole respectif (constante user_cfg.h)
   Ajouter catégories avec peu d'information (name, proxy, stun, enable pour SIP; name, proxy, enable pour AIX): 
     [SIP0]
     ...
     [AIX0]
     ...
2- Initialisation des accounts avec les bonnes informations (selon leur nom)

Tests:
- Initialisation sans rien dans le fichier de configuration (variable par défaut)
- Sauvegarde de renseignements (1ere fois)
- Initialisation avec renseignements 
- Sauvegarde de renseignements (2e fois)
- Accès aux renseignements des comptes utilisateurs (spécifiques) 
- Compilation
Fin 17:20 - 50 minutes

VoIPLink (début: 22:45)
==================
1- ajouter les voIPLink spécifiques dans les accounts : OK
2- coder init : OK
3-       terminate : OK
4-       register : OK
5-       unregister dans les accounts/voiplink pour SIP : OK
6- Supprimer le VoIPLinkVector
   1- fichier managerimpl.h
   2- fichier managerimpl.cpp
      _voIPLinkVector.push_back(new SipVoIPLink()); remplacer par la création de l'account SIP (loadAccountMap)
      _voIPLinkVector.clear();  remplacer par la suppression des accounts (unloadAccountMap)
      Call* call = new Call(id, type, _voIPLinkVector.at(DFT_VOIP_LINK));
       remplacer par un hardcoding de getAccountLink(ACCOUNT_SIP0)
      remplacer init/terminate/setRegister/setUnregister avec getAccount(ACCOUNT_SIP0)
  
Tests: 
- créer le voiplink dans le constructeur : OK
- supprimer le voiplink dans le destructeur : OK
- accéder aux voiplink via le ManagerImpl
- initialiser le voiplink : OK
- terminer le voiplink : OK
- s'enregistrer avec le voiplink : OK
- se désinscrire du voiplink : OK

FIN: 23:55 : 1:10


SipVoIPLink2 et Call2
================== (début 2006-03-30 05:45)
1- Créer un SIPVoIPLink2 : OK
2- Créer un Call2 : OK
3- Créer un SIPCall2 qui hérite de Call2: OK (compile : OK)

4- Créer un mutex CallMutex : OK
5- Créer un CallMap dans le voIPLink : OK
6- Créer un CallMapMutex dans le voIPLink : OK
7- Créer les méthodes: AddCall, RemoveCall, GetCall dans le voIPLink
8- Implémenter les méthodes AddCall, RemoveCall, GetCall dans le voIPLink : OK (6:42)
9- Remplacer le SipVoIPLink par SipVoIPLink2 dans le SIPAccount : OK
Compile: OK
=================== (fin: 2006-03-30 06:45 | 1h00)

Fusion SipVoIPLink > SIPVoIPLink2
====== (début: 2006-03-30 07:35)
1- Modifier EventThread pour accepter un VoIPLink : OK
2- Modifier VoIPLink pour définir getEvent() : OK
3- Transférer constructeur/destructeur : OK (08:16)
4- Transférer terminate() : OK (08:29, placé virtual sur les destructeurs des classes héritées, pour le polymorphisme)
5- Transférer init() : OK (09:34)
======= (fin:  2006-03-30 09:35  | 2h00) 

====== (début: 2006-03-30 13:00)
6- Transférer setRegister   : OK
              setUnregister : OK (14:10)
====== (début: 2006-03-30 14:30)
7- Transférer outgoingCall : OK 16:40 (pas testé)
8- Ajouter event type dans getEvents: OK 17:10
====== (fin : 2005-03-30 17:10)
====== (début:2005-03-30 20:35)
9- Transférer incomingCall  
=======(fin  :2005-03-30 22:48)
=======(début:2005-03-31 08:00)
10- Transférer Answer
=======(fin  :2005-03-31 09:33)
=======(début:2005-03-31 15:50)
Épurer voIPLink
Finir transition vers SIPCall2 dans voIPLink
Supprimer définitivement les références à SipCall et Call
=======(fin:  2005-03-31 18:22)
=======(début:2005-03-31 21:30)
Implémenter getEvent() dans SIPVoIPLink2 (1 à 9)
=======(  fin:2005-03-31 22:51)
=======(début:2005-04-01 09:00)
Implémenter getEvent() dans SIPVoIPLink2 (10 à 14)
=======(  fin:2005-04-01 10:30)
=======(début:2005-04-01 11:15)
Implémenter getEvent() dans SIPVoIPLink2 (15 à 48)
=======(  fin:2005-04-01 12:05 )
=======(début:2005-04-01 20:55)
Implémenter les commandes appels sortant (hangup/...)
Ça fonctionne! Invite OK, Hangup: OK, hold: OK, unhold: OK
=======(  fin:2005-04-01 23:02)

=======(début:2005-04-02 09:45)
AIX -> IAX
Transfert de VoIPLink2 -> VoIPLink
Transfert de Call2 -> Call
Transfert de SIPCall2 -> SIPCall
Transfert des crédits (copyright)
=======(  fin:2005-04-02 10:24)
=======(début:2005-04-02 10:25)
Réparer gaff: supprimer sipcall2.cpp!  à refaire au complet ;-(
=======(  fin:2005-04-02 11:32)
=======(début:2005-04-02 11:33)
Réimplémenter getCallStatus()
Hardcoder SIP0 dans le GUI
Tester avec le GUI
Commiter tout sur le CVS
Enlever définitivement subcall
=======(  fin:2005-04-02 12:27)

=======(début:2005-04-02 12:45)
Correction mineure sflphone-cli
Correction mineure Stun
=======(début:2005-04-02 12:58)


=======(début:2005-04-02 17:10)
Début implémentation de IAX
- inclure la librairie

GUI
=================
1- Gérer les comptes utilisateurs dans le GUI

Tests difficile:
- démarrer deux SipVoIPLink en même temps... 
   si ça ne marche pas:
      ajout méthode pour l'exclusivité des liens SIP
- démarrer deux AIXVoIPLink en même temps
   si ça ne marche pas:
      ajout méthode pour l'exclusivité des liens AIX
- démarrer un SipVOIPLink et un AIXVoIPLink en même temps
   si ça ne marche pas:
      ajout méthode pour un compte enable à la fois


Rédaction initiale des tâches (jusqu'au SIPVoIPLink (sans les tests)) : 2006-03-28 : 1 heure
Modification section SIPVoIPLink. Ajout Call/GUI. 2006-03-29: 1 heure