il faudrait avoir une vision un peu globale.
mais non ça me parait pas propre.
déjà tes variables et ports doivent être configurables, et si tu as une partie tranport différente, il vaudrait mieux passer par un objet qui s'occupe de ça, avec des primitives qui vont bien.
avec par exemple la possibilitée de faire les "deux".
style:
Code :
- class Communication_Layer
- {
- public:
- // primitives de communication
- virtual bool Initialize() = 0;
- virtual bool Send( ..... ) = 0;
- ....
- };
- class HTTPS_Layer : public Communication_Layer
- {
- public:
- virtual bool Initialize(); // gnagna init http...
- .....
- };
- class SIP_Layer : public Communication_Layer
- {
- .... idem
- };
- class ServerEngine
- {
- public:
- std::vector< boost::shared_ptr<Communication_Layer> > Layers;
- void CreateCommunicationLayers(); // parse un fichier de config et instancie les couches de communication...
- };
|
enfin voilà, les trucs figés, c'est très vilain: si tu as plusieurs modes de communication, il vaut mieux réfléchir à créer un objet d'abstraction avec les primitives minimalistes et le masquage de l'implémentation de la communication, et ainsi de pouvoir brasser ce que tu veux avec des communication multiples de natures différentes.
bon c'est une idée.
après, si tu n'as pas encore la vision des objets clés et de leurs primitives (le choix de bonnes primitives est la clé des perfs et de la souplesse de manière simultannée), tu peux bricoler encore un peu ton truc avec tes compilations conditionnelles, mais si tu pousses ton projet sur un stade avancé ça va être une usine à gaz a maintenir.
Message édité par bjone le 23-07-2007 à 13:01:15