Newsgroup: it.comp.lang.c
Titolo: Commenti, opinioni e simili

Salve a tutti,
da poco ho deciso di mettere Open Source un po' di progetti più o meno
utili che penso possano essere utili a qualcuno. Tutte le funzioni che
utilizzo qua e là le ho riunite in un unica libreria, che si occupa
sia di raccogliere le classiche funzioni di utilità (liste /
hashtables / stringhe, etc.), sia di fare wrapping di funzioni di
sistema tra windows e linux (caricamento dinamico moduli, threads,
shared memories, sockets, oggetti di sincronizzazione, etc.).
Tale libreria ha anche funzioni per il tracing degli errori e funzioni
per fare TAP-testing (anche su se stessa in compilazione ;)
ovviamente), quindi personalmente la uso come un piccolo framework.
Personalmente la trovo super-comoda, ma per essere usata da altri è
ancora un abbozzo in stato prototipale oltre che molto incompleta
(visto che aggiungo funzioni solo quando mi servono).
Posto qui il link sperando in commenti ed opinioni, visto che
sicuramente ognuno di voi utilizza qualcosa del genere :)
http://code.google.com/p/libmmp/
Ciao e grazie dei feedbacks!

 
http://code.google.com/p/libmmp/
Ma dove si scaricano i sorgenti?

 Ma dove si scaricano i sorgenti?
per adesso non ho fatto un "pacchetto" - dal tab source c'è un link al
repository svn
(che dovrebbe essere 
http://libmmp.googlecode.com/svn/trunk/
)
Ciao!

 Ciao!
Ok. In questo periodo prevedo di fare ordine nella "mia" libreria
multipiattaforma aziendale, se vuoi si potrebbe fare fondere con la
tua. Non mi sta però bene la licenza. LGPL mi andrebbe bene.
In realtà c'è anche lo scoglio del linguaggio. Io ho preferito usare
il C++ per avere dei controlli in più. Per esempio vedo che nel tuo
codice hai:
#ifndef _WIN32
    typedef int t_socket;
#else
    typedef SOCKET t_socket;
#endif
mentre io preferito usare codice c++ per potere scrivere:
#if defined(_WIN32)
typedef SOCKET qkSocket_;
#endif
#if defined(LINUX)
typedef int qkSocket_;
#endif
const int SOCKET__ERROR = -1;
struct QKSocket
{
      qkSocket_ sck;
      QKSocket():sck(SOCKET__ERROR){}
};
La tipizzazione mi serve per essere più stringente con i parametri
delle funzioni.
Io non avrei nessun vantaggio ad usare il C invece che il C++

 Io non avrei nessun vantaggio ad usare il C invece che il C++
Personalmente sono andato per il C perché, oltre al fatto che ho
intenzione di usare alcune funzioni in ambienti embedded/risicati, non
volevo perdere la possibilità di fare linking con codice C. Ovviamente
in C++, essendo questo un linguaggio a più alto livello, ti offre più
funzionalità - ma a questo punto perché non scrivere tutto in
Python? :D
Ritornando poi al motivo del mio post iniziale, a parte la scelta del
linguaggio, come ti sembra il tutto?
Ciao!

 Ciao!
Non ti offendere, la libreria non è male ma mi sembra troppo
"minimale".
Ho guardato, di fretta, principalmente la parte socket.
Mi pare che non c'è distinzione tra socket bloccanti e non bloccanti.
Io uso tutte e due i tipi di socket.
Dalla libreria non mi pare che ho "accesso" alla funzione setsockopt.
E' vero che le opzioni dipendono dalla piattaforma, ma però a me serve
potere settare alcuni di quei parametri.
Per esempio nel mio codice, di solito, disattivo l'algoritmo di nagle
perché per quel che faccio sono più i problemi che i vantaggi.
Poi nella mmp_socket_server_start non passi l'indirizzo su cui fare il
bind e usi INADDR_ANY, mentre nel mio caso è la norma che il cliente
abbia computer con più schede di rete, ma che voglia che il server in
questione sia "visibile" solo da un certa sotto rete.
C'è da dire che probabilmente abbiamo esigenze diverse. Il minimale
per me non è un vantaggio.


wrote:

Sì, la parte dei socket è veramente risicata, in quanto ho inserito
solo le funzioni che mi erano strettamente necessarie, e le ho usate
anche poco! ;)
I socket sono tutti non-bloccanti, e il binding è su tutte le
interfacce. Questo perché era precisamente il caso che mi serviva e
volevo mantenere l'interfaccia semplice, senza troppi parametri.
Ho sicuramente intenzione di aggiungere qualcosa, ma sicuramente non
prima che mi capiti una condizione d'uso reale :-)
Ciao!


wrote:

In ogni caso non ti ho chiesto la cosa più importante: dove posso
vedere la tua libreria? :-) Se so di aver arricchito almeno una code-
base delle due dormirò sicuramente più rilassato ;)
In caso non sia "visibile" perché commerciale (da quanto ho capito
dalle tue domande sulla licenza) allora peccato - spero comunque in
qualche suggerimento "non in C" riguardo a problemi già affrontati e
risolti!
Ciao!