Aggiornamento Hybris : Strutture e Server Socket

Già da tempo Hybris è dotato (o dotatA ? :D ) delle funzionalità necessarie per il loading dinamico delle librerie (i file .so su Linux e in futuro le .dll di Windowz), così ieri mi sono messo a lavoro per estendere il supporto anche alle funzioni che richiedono come parametri delle strutture.

Di conseguenza, ho creato una libreria di test (libtest.so) che esporta una funzione, il codice è il seguente :

libtest

Come si può evincere dal codice, la funzione ‘print_struct’ richiede come parametro un puntatore ad una variabile del tipo ‘test_struct_t’, ovvero una semplice struttura con un intero, una stringa e un double .

Ecco il codice hybris che creerà questa struttura, ne imposterà i valori, linkerà la funzione dalla libreria e la richiamerà correttamente (la prima parte del codice è semplicemente un test su puntatori, alias e reference) :

struct

E naturalmente l’output è :

[evilsocket@masamune ~/Desktop/code/hybris] hybris examples/alias_as_ptr.hs
numero    : 123 (int)
reference : 0x92E49E0 (alias)
nuovo     : 123 (int)
test_struct_t::number : 123
test_struct_t::str    : Hello World
test_struct_t::dbl    : 10.120000

Da qui, linkare le funzioni più usate nelle varie librerie di sistema e richiamarle con la giusta tipologia di dati strutturati è un attimo ^^ .

Inoltre, ho continuato a lavorare sul supporto per i socket (nel file netio.cc dei builtins), aggiungendo le funzioni ’server’ e ‘accept’ così da dotare il linguaggio di un minimo di funzionalità lato server … beh, ecco un echo server di esempio :

echo_server

Già che c’ero ci ho buttato dentro il multi processo con fork che tanto era già implementato :D a breve il supporto per i threads ;) (ovviamente POSIX).

Popularity: 9% [?]

No related posts.

One Response to “Aggiornamento Hybris : Strutture e Server Socket”

  • hawake scrive:

    Complimenti Evil, non mi finisci mai di stupirmi. Mi piacerebbe ribeccare te e Matrix… ti ricordi al LinuxDay? :D

  • Leave a Reply:

    Name (required):
    Mail (will not be published) (required):
    Website:
    Comment (required):
    XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>