gestion des erreurs venant de différentes couches

gestion des erreurs venant de différentes couches - C++ - Programmation

Marsh Posté le 31-03-2011 à 17:34:56    

Bonjour,
je dois rajouter une couche SSL sous une application existante :
TCP-> SSL -> MYapi -> application
J'ai une classe errorcode qui est définie comme suit :
 

Code :
  1. class errorcode {
  2.    int err;
  3. public:
  4.    errorcode() : err(0) { }
  5.    errorcode(int e) : err(e) { }
  6. #if defined(__APPLE__)
  7.    static int lasterror() { (int) pthread_getspecific(gMyErrCode); }
  8.    ~errorcode() { pthread_setspecific(gMyErrCode, (void*) err); }
  9. #elif !defined(_WIN32_WCE)
  10.    static int lasterror() { return gMyErrCode; }
  11.    ~errorcode() { gMyErrCode = err; }
  12. #else
  13.    ~errorcode() { TlsSetValue(gMyErrCode, (LPVOID) err); }
  14.    static int lasterror() { return (int)TlsGetValue(gMyErrCode); }
  15. #endif
  16.    operator int() const { return err; }
  17.    int operator-() const { return -err; }
  18.    errorcode& operator=(int e) { err = e; return *this; }
  19. };


 
l'utilisation de la classe errorcode est comme suit :
 

Code :
  1. errorcode err;
  2. ...
  3. sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
  4.   if (!sock) {
  5.     err = sockerrno();
  6.     log(ERROR, "error %s creating sock socket", sockstrerror(err));
  7.     goto oserror;
  8.   }
  9. ...
  10. if (!socki->u.rtcp.info) {
  11.       log(ERROR, "no memory for rtcp protocol info" );
  12.       err = MY_ERROR_OUTOFMEMORY;
  13.       goto myerror;
  14.     }


je dois traiter les erreurs générées éventuellement par ma couche SSL.
 
Mes questions :
Est ce que je dois rajouter des codes d'erreurs de type MY_ERROR_PUB_KEY_NOT_FOUND dans la liste (enum) des codes d'erreurs ou j'utilise le code d'erreurs offert par OpenSSL ? en gros :

Code :
  1. err = MY_ERROR_PUB_KEY_NOT_FOUND


ou

Code :
  1. err = ERR_SSL_PUB_KEY_NOT_FOUND


Merci d'avance pour votre aide.

Reply

Marsh Posté le 31-03-2011 à 17:34:56   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed