17.06.2013 Views

pvbrowser manual - Flussi liberi informatici

pvbrowser manual - Flussi liberi informatici

pvbrowser manual - Flussi liberi informatici

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Capitolo 5<br />

Programmazione<br />

Se si sceglie ’File− >new pvserver’ in pvdevelop vi verrà chiesto il nome e la directory di creazione per il vostro<br />

pvserver. Dopo di che il designer integrato diventerà visibile e utilizzato il popup menu disponibile con un clic<br />

destro del mouse sarà possibile definire il layout delle vostre maschere. Quando avremo finito dovremo salvare<br />

il layout e tornare alla modalità editor.<br />

Lo scheletro del nuovo pvserver verrà generato. Si prega di dare un’occhiata al codice sorgente utilizando<br />

pvdevelop per comprendere la struttura del nostro pserver.<br />

Dopo questi primi passi è possibile avviare la nostra applicazione.<br />

’Action− >start server’ e ’Action− >start browser’ sono i comandi di base.<br />

Il vostro compito è ora quello di definire la struttura dei dati DATA e di scrivere il codice delle mask∗ slots.h<br />

al fine di definire la logica del vostro pvserver.<br />

5.1 Strutura di un pvserver<br />

Un pvserver è composto dalle parti che vengono descritte di seguito. Vi è un file di progetto in cui sono definiti<br />

i file sorgenti e le librerie del pvserver.<br />

C’è un file main nel quale si possono trovare due diverse versioni di main() una per inetd e una per il Multithreaded<br />

e che sono selezionate da un simbolo #ifdef per il preprocessore. Di default è attiva la scelta per<br />

il server multi-threaded. Se si desidera avviare il pvserver dal Superserver xinetd è necessario decommentare<br />

USE INETD all’interno del file di progetto e selezionare ’libpvsid’ invece di ’libpvsmt’ come libreria <strong>pvbrowser</strong>.<br />

pvMain è la funzione principale per servire un client. In questa subroutine vi è un loop in cui sono richiamate<br />

le maschere disponibili. Il valore di ritorno di una maschera determina quale sarà la prossima maschera che<br />

verrà mostrata.<br />

C’è un file intestazione (headers) che è incluso in tutti i sorgenti di un pvserver.<br />

Ci sono tante maschere quante ne sono stato progettate. Il codice sorgente viene generato automaticamente<br />

da pvdevelop. Normalmente non è necessario preoccuparsi dello scheletro (struttura) dell’applicazione.<br />

Esistono tanti mask slots quante sono le maschere progettate. Questo file di intestazione è incluso all’interno<br />

della corrispondente maschera. In questo file viene definita la struttura locale dei dati e le funzioni di slot.<br />

5.1.1 File di progetto per qmake<br />

Dal file di progetto qmake in Qt SDK può generare un Makefile. All’interno di tale file di progetto sono<br />

specificati tutti i sorgenti e le librerie utilizzate dal vostro pvserver. Si prega di notare che il file di progetto<br />

seleziona automaticamente le librerie per il sistema operativo che si sta utilizzando. Se si desidera utilizzare<br />

librerie aggiuntive all’interno del vostro pvserver è possibile specificarle all’interno del file di progetto.<br />

file di progetto<br />

######################################################################<br />

# generated by pvdevelop at: Mi Nov 8 11:58:45 2006<br />

######################################################################<br />

TEMPLATE = app<br />

CONFIG = warn_on release<br />

CONFIG -= qt<br />

11

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!