begin process at 2012 05 29 03:25:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

gestion des erreurs venant de différentes couches


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

gestion des erreurs venant de différentes couches

jeudi 31 mars 2011 à 17:32:00 | gestion des erreurs venant de différentes couches

razuki

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 C/C++ :
class errorcode {
 
   int err;
 
 public:
   errorcode() : err(0) { }
   errorcode(int e) : err(e) { }
 
#if defined(__APPLE__)
   static int lasterror() { (int) pthread_getspecific(gMyErrCode); }
   ~errorcode() { pthread_setspecific(gMyErrCode, (void*) err); }
#elif !defined(_WIN32_WCE)
   static int lasterror() { return gMyErrCode; }
   ~errorcode() { gMyErrCode = err; }
#else
   ~errorcode() { TlsSetValue(gMyErrCode, (LPVOID) err); }
   static int lasterror() { return (int)TlsGetValue(gMyErrCode); }
#endif
   operator int() const { return err; }
   int operator-() const { return -err; }
   errorcode& operator=(int e) { err = e; return *this; } 
 };
 


l'utilisation de la classe errorcode est comme suit :
Code C/C++ :
[color=red]errorcode err;[/color]
...
sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
  if (!sock) {
   [color=red] err = sockerrno();[/color]
    log(ERROR, "error %s creating sock socket", sockstrerror(err));
    goto oserror;
  }

...
if (!socki->u.rtcp.info) {
      log(ERROR, "no memory for rtcp protocol info");
      [color=red]err = MY_ERROR_OUTOFMEMORY;[/color]
      goto myerror;
    }


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 C/C++ :
err = MY_ERROR_PUB_KEY_NOT_FOUND

ou
Code C/C++ :
err = ERR_SSL_PUB_KEY_NOT_FOUND


Merci d'avance pour votre aide.
jeudi 31 mars 2011 à 17:38:04 | Re : gestion des erreurs venant de différentes couches

CptPingu

Administrateur CodeS-SourceS
Utilise tes propres codes d'erreurs. En effet, si un code d'erreur SSL à la même valeur qu'une erreur existante dans la solution que tu reprends, tu seras bien embêté...

________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
jeudi 31 mars 2011 à 18:00:41 | Re : gestion des erreurs venant de différentes couches

razuki

Et le mec qui a écrit les codes d'erreur MY_ERROR_..., comment il peut savoir que ca coincide pas aux codes d'erreur de l'OS ?
jeudi 31 mars 2011 à 18:04:19 | Re : gestion des erreurs venant de différentes couches

CptPingu

Administrateur CodeS-SourceS
Aucune importance, tant qu'il n'exploite pas les deux au même moment.

Le seul souci c'est quand tu compares les valeurs:
Code C/C++ :
#define MY_ERROR1 1
#define MY_ERROR2 2

#define KERNEL_ERROR 1
#define UNKNOW_ERROR 2

int err = UNKNOW_ERROR;

if (err == MY_ERROR2)
{
  // Entrera ici
}
else if (err == UNKNOW_ERROR)
{
  // N'entrera jamais ici
}


________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
jeudi 31 mars 2011 à 18:18:31 | Re : gestion des erreurs venant de différentes couches

razuki

D'acc.

en fait il n'a pas utilisé des #defines mais un myerrno.h contenant :
Code C/C++ :
enum MY_ERRORS {

  MY_ERROR_NOERROR 		= 0,
  MY_ERROR_SUCCESS 		= 0,

  MY_ERROR_BASE                = 0x0C510000,        /* Potentiellement à modifier */

 
  /* Erreurs génériques */
  MY_ERROR_BUFFERTOOSMALL,                          /* Taille du tampon trop petite. */
  MY_ERROR_TIMEOUT,                                 /* L'opération est trop longue. */
  MY_ERROR_OUTOFMEMORY,                             /* Il n'y a plus de mémoire disponible. */
  MY_ERROR_INVALIDPARAMETERS,                       /* Certains paramètres sont invalides. */
  MY_ERROR_INVALIDFORMAT,                           /* Le format des données entrées est incorrect*/
  MY_ERROR_NOTREADY,                                /* La fonction n'est pas prête à effectuer l'opération. */ 
  MY_ERROR_FILENOTFOUND,                            /* Le fichier est introuvable */	
  MY_ERROR_SOCKETERROR,                             /* Erreur de la bibliothèque socket du système*/

  /* Erreurs réseaux */
  MY_ERROR_NETWORK = (MY_ERROR_BASE + 0x1000),
  MY_ERROR_CONNECTIONREFUSED,                       /* Le serveur a refusé la connexion. */


j'imagine que la valeur MY_ERROR_BASE n'est pas à choisir au hasard ...
il faut prendre les un interval sûr, c'est à dire non occupé par les erreurs système, non ?
jeudi 31 mars 2011 à 18:24:39 | Re : gestion des erreurs venant de différentes couches

CptPingu

Administrateur CodeS-SourceS
Oui :)
L'important ce que tu n'ais pas de code d'erreur ayant la même valeur au sein de ton application, s'ils ont vocation à être comparé dans un même ensemble.

________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question


Cette discussion est classée dans : code, int, erreurs, err, errorcode


Répondre à ce message

Sujets en rapport avec ce message

ERREURS incompréhensibles ? au secours ......!!! [ par nicoy2000 ] xlC *.C affiche.C:fond.C:sapin.C:sol.C:triangleJD.C:triangleJG.C:ld: 0711-224 WARNING: Duplicate symbol: .triangleJG(int,int,char(*)[5],int,int)ld: Aide pour mega debutant [ par C++ ] Salut, bon alors je vien d ouvrir c++ mais comment mettre un code sur un boutton ???par exemple ce code comment je doits le mettre sur un bouton :int Probleme avec le "linker" [ par Darkneon ] Salut,J'ai 3 fichiers comme ceciTest.cpp#include "test.h"#include void PrintA(int num){ for(int i=0; i<num; i++ Cacher le curseur [ par BsEtZeOpLhD ] Salut.J'essay de cacher le curseur sous win Xp.J'ai fait le code suivant :#include int WINAPI WinMain(HINSTANCE hinstExe, HINSTANC besoin d'aide [ par ekinoks ] voila g trouver un code c++ pour decrypté un fichier mais je m'y conné pas dutout en c++ kunkun pouré m'aidéle code est :void p(FILE* fp, int seed) { exception et AfsMessageBox [ par poseidon2 ] Voic mon code: void *ImageLink::imageRecvThread(void *pParam){ ImageLink *iLink = (ImageLink*)pParam; int nIndex = 0; int nSizeRecv = 0; unsigned in Difference [ par xionoxid ] C'est koi la difference entre time (0) et time (NULL) les 2 font des nbr aleatoire !??#include #include #i Pointeur [ par casafa ] Bonjour tlm,Je suis débutant et je comprend à quoi sert les pointeurs...Quel est la différence entre ces 2 exemples, qu'est ce que le premier à en plu Erreur [ par LordBob ] Salut a tous,voila je voudrait faire un truc, mais je n'y arrive pas. Alors plutot que de vous expliquez ce que c'est, je vous montre le code.#include Lots de questions [ par Arkko ] J'ai quelque question et pour mieux les expliquer regarder le code si-dessousclass Rationnel{ private: int numerateur; int denominate


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales