You can subscribe to this list here.
| 2003 |
Jan
|
Feb
(29) |
Mar
(109) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <ben...@id...> - 2004-05-22 12:04:28
|
Dear Open Source developer I am doing a research project on "Fun and Software Development" in which I kindly invite you to participate. You will find the online survey under http://fasd.ethz.ch/qsf/. The questionnaire consists of 53 questions and you will need about 15 minutes to complete it. With the FASD project (Fun and Software Development) we want to define the motivational significance of fun when software developers decide to engage in Open Source projects. What is special about our research project is that a similar survey is planned with software developers in commercial firms. This procedure allows the immediate comparison between the involved individuals and the conditions of production of these two development models. Thus we hope to obtain substantial new insights to the phenomenon of Open Source Development. With many thanks for your participation, Benno Luthiger PS: The results of the survey will be published under http://www.isu.unizh.ch/fuehrung/blprojects/FASD/. We have set up the mailing list fa...@we... for this study. Please see http://fasd.ethz.ch/qsf/mailinglist_en.html for registration to this mailing list. _______________________________________________________________________ Benno Luthiger Swiss Federal Institute of Technology Zurich 8092 Zurich Mail: benno.luthiger(at)id.ethz.ch _______________________________________________________________________ |
|
From: <car...@us...> - 2003-04-01 02:21:31
|
Update of /cvsroot/madsserv/madsserv/doc/javadoc In directory sc8-pr-cvs1:/tmp/cvs-serv2441 Added Files: ThreadListenClients.html Log Message: |
|
From: <car...@us...> - 2003-03-29 22:03:41
|
Update of /cvsroot/madsserv/madsserv/src/server/streaming
In directory sc8-pr-cvs1:/tmp/cvs-serv16435/streaming
Modified Files:
Streaming.java
Log Message:
modifications des infos envoyees au client
Index: Streaming.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/server/streaming/Streaming.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** Streaming.java 24 Mar 2003 02:54:25 -0000 1.6
--- Streaming.java 29 Mar 2003 22:03:35 -0000 1.7
***************
*** 171,181 ****
updateStats.close();
- /* alreadySent = 0;
- for (int i = 0; i < sendStreamVectors.length; i++) {
- for (int j = 0; j < sendStreamVectors[i].size(); j++) {
- alreadySent += ( (SendStream) sendStreamVectors[i].elementAt(j)).
- getSourceTransmissionStats().getBytesTransmitted();
- }
- }*/
// Enregistrment du moment de suppression des anciens flux (utilise par le thread de calcul du debit)
then = System.currentTimeMillis();
--- 171,174 ----
***************
*** 185,195 ****
for (int i = 0; i < nbManagers; i++) {
vectSize = sendStreamVectors[i].size();
- System.err.println("Taille du vecteur sendStream " + i + " : " +
- vectSize);
if (vectSize > 0) {
for (int j = 0; j < vectSize; j++) {
( (SendStream) sendStreamVectors[i].get(j)).close();
sendStreamVectors[i].remove(j);
- System.err.println("suppression du sendstream " + i + "," + j);
}
}
--- 178,185 ----
***************
*** 215,219 ****
// Envoi d'un message au client pour le prevenir de l'arrivee de nouveaux flux
String[] messageToSend = new String[2];
! messageToSend[0] = "Pret a envoyer le media";
messageToSend[1] = String.valueOf(ss.length);
addLog("Envoi du message : " + messageToSend[0]);
--- 205,209 ----
// Envoi d'un message au client pour le prevenir de l'arrivee de nouveaux flux
String[] messageToSend = new String[2];
! messageToSend[0] = "Mise en tampon";
messageToSend[1] = String.valueOf(ss.length);
addLog("Envoi du message : " + messageToSend[0]);
***************
*** 284,294 ****
for (int i = 0; i < nbManagers; i++) {
vectSize = sendStreamVectors[i].size();
- System.err.println("Taille du vecteur sendStream num" + i + " : " +
- vectSize);
if (vectSize > 0) {
for (int j = 0; j < vectSize; j++) {
( (SendStream) sendStreamVectors[i].get(j)).close();
sendStreamVectors[i].remove(j);
- System.err.println("suppression du sendstream " + i + "," + j);
}
}
--- 274,281 ----
|
|
From: <mar...@us...> - 2003-03-26 01:04:15
|
Update of /cvsroot/madsserv/madsserv/src/server/transition
In directory sc8-pr-cvs1:/tmp/cvs-serv14048/src/server/transition
Modified Files:
Transition.java
Log Message:
Amelioration des transitions
Index: Transition.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/server/transition/Transition.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** Transition.java 24 Mar 2003 02:54:25 -0000 1.9
--- Transition.java 26 Mar 2003 01:03:42 -0000 1.10
***************
*** 33,36 ****
--- 33,38 ----
protected Streaming streamingRef;
private String temp;
+ protected Format[][] supportedFormats = null;
+
/**
***************
*** 164,172 ****
{
- Random random = new Random();
double mediaLength = 0;
double auxTime = 0;
float jpegQuality=0;
! Time startTime;
Time auxMediaTime;
Format[] reencodingFormats=null;
--- 166,173 ----
{
double mediaLength = 0;
double auxTime = 0;
float jpegQuality=0;
! Time startTime = null;
Time auxMediaTime;
Format[] reencodingFormats=null;
***************
*** 175,191 ****
//variables qui stockes le format original Video et Audio
- Format[][] supportedFormats;
qualityLevel = _qualityLevel;
addLog("nouvelle qualite " + String.valueOf(qualityLevel));
! //On obtient ici les formats Video et Audio Supportes.
! try {
! supportedFormats = reencodeRef.getSupportedFormats();
! reencodingFormats= gestionAdaptaRef.getStreamingFormat(supportedFormats,qualityLevel);
}
catch (Exception e) {
throw e;
}
! //On obtient ici les formats Video et Audio de reencodage.
if (reencodeRef.multiMedia) {
reencodingVideoFor = (VideoFormat) reencodingFormats[1];
--- 176,202 ----
//variables qui stockes le format original Video et Audio
qualityLevel = _qualityLevel;
addLog("nouvelle qualite " + String.valueOf(qualityLevel));
!
! if(_newFile) { // Nouveau fichier
! try { //On obtient ici les formats Video et Audio Supportes.
! supportedFormats = reencodeRef.getSupportedFormats();
! }
! catch (Exception e) {
! throw e;
! }
! totalTime = 0;
! startTime = new Time(0);
! }
!
! try { // On recupere les formats de reencodage
! reencodingFormats = gestionAdaptaRef.getStreamingFormat(supportedFormats,
! qualityLevel);
}
catch (Exception e) {
throw e;
}
!
if (reencodeRef.multiMedia) {
reencodingVideoFor = (VideoFormat) reencodingFormats[1];
***************
*** 197,201 ****
}
! if (!_newFile) {
mediaTimeReceived = false;
mediaLength = reencodeRef.getMediaLength();
--- 208,212 ----
}
! if (!_newFile) { // Fichier deja commence
mediaTimeReceived = false;
mediaLength = reencodeRef.getMediaLength();
***************
*** 208,217 ****
startTime = new Time(totalTime);
}
- else {
- totalTime = 0;
- startTime = new Time(0);
- }
- //on Transmet ici les formats Audio et Video de reencodage
if (reencodeRef.multiMedia) {
reencodeRef.setReencodingVideoFormat(reencodingVideoFor);
--- 219,224 ----
startTime = new Time(totalTime);
}
+ // On transmet ici les formats Audio et Video de reencodage
if (reencodeRef.multiMedia) {
reencodeRef.setReencodingVideoFormat(reencodingVideoFor);
|
|
From: <mar...@us...> - 2003-03-26 01:04:15
|
Update of /cvsroot/madsserv/madsserv/src/server/processor
In directory sc8-pr-cvs1:/tmp/cvs-serv14048/src/server/processor
Modified Files:
ThreadReencode.java
Log Message:
Amelioration des transitions
Index: ThreadReencode.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/server/processor/ThreadReencode.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** ThreadReencode.java 24 Mar 2003 16:52:44 -0000 1.14
--- ThreadReencode.java 26 Mar 2003 01:03:42 -0000 1.15
***************
*** 204,208 ****
tracks[0].setFormat(finalReencodingVideoFormat);
tracks[1].setFormat(reencodingAudioFormat);
! addLog("createProcessor;multimedia;setVideoFormat;" + reencodingVideoFormat.toString());
addLog("createProcessor;multimedia;setAudioFormat;" + reencodingAudioFormat.toString());
}
--- 204,212 ----
tracks[0].setFormat(finalReencodingVideoFormat);
tracks[1].setFormat(reencodingAudioFormat);
! addLog("createProcessor;multimedia;setVideoFormat;" + finalReencodingVideoFormat.toString());
! addLog("createProcessor;multimedia;setVideoFormat;" + finalReencodingVideoFormat.getEncoding()
! + ";" + ((VideoFormat)finalReencodingVideoFormat).getFrameRate() + "images/s"
! + ";h" + ((VideoFormat)finalReencodingVideoFormat).getSize().height
! + ";w" + ((VideoFormat)finalReencodingVideoFormat).getSize().width);
addLog("createProcessor;multimedia;setAudioFormat;" + reencodingAudioFormat.toString());
}
|
|
From: <mar...@us...> - 2003-03-26 01:04:15
|
Update of /cvsroot/madsserv/madsserv/src/server
In directory sc8-pr-cvs1:/tmp/cvs-serv14048/src/server
Modified Files:
ThreadListenClients.java ThreadListenSimulator.java
ThreadRead.java ThreadWrite.java
Log Message:
Amelioration des transitions
Index: ThreadListenClients.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/server/ThreadListenClients.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** ThreadListenClients.java 24 Mar 2003 02:54:25 -0000 1.9
--- ThreadListenClients.java 26 Mar 2003 01:03:42 -0000 1.10
***************
*** 71,75 ****
}
catch (Exception e) {
! e.printStackTrace();
}
finally {
--- 71,75 ----
}
catch (Exception e) {
! //e.printStackTrace();
}
finally {
Index: ThreadListenSimulator.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/server/ThreadListenSimulator.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** ThreadListenSimulator.java 24 Mar 2003 02:54:25 -0000 1.3
--- ThreadListenSimulator.java 26 Mar 2003 01:03:42 -0000 1.4
***************
*** 65,69 ****
}
catch (Exception e) {
! e.printStackTrace();
}
finally {
--- 65,69 ----
}
catch (Exception e) {
! //e.printStackTrace();
}
finally {
Index: ThreadRead.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/server/ThreadRead.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** ThreadRead.java 24 Mar 2003 02:54:25 -0000 1.6
--- ThreadRead.java 26 Mar 2003 01:03:42 -0000 1.7
***************
*** 79,83 ****
}
catch (Exception e) {
! e.printStackTrace();
}
finally {
--- 79,83 ----
}
catch (Exception e) {
! //e.printStackTrace();
}
finally {
Index: ThreadWrite.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/server/ThreadWrite.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** ThreadWrite.java 24 Mar 2003 02:54:25 -0000 1.4
--- ThreadWrite.java 26 Mar 2003 01:03:42 -0000 1.5
***************
*** 72,76 ****
}
catch (Exception e) {
! e.printStackTrace();
}
finally {
--- 72,76 ----
}
catch (Exception e) {
! //e.printStackTrace();
}
finally {
|
|
From: <mar...@us...> - 2003-03-26 01:04:15
|
Update of /cvsroot/madsserv/madsserv/src/server/adaptability
In directory sc8-pr-cvs1:/tmp/cvs-serv14048/src/server/adaptability
Modified Files:
GestionAdapta.java
Log Message:
Amelioration des transitions
Index: GestionAdapta.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/server/adaptability/GestionAdapta.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** GestionAdapta.java 25 Mar 2003 03:33:22 -0000 1.10
--- GestionAdapta.java 26 Mar 2003 01:03:42 -0000 1.11
***************
*** 105,109 ****
}
if (nivQualite == 2) {
! return 0.25f;
}
if (nivQualite == 3) {
--- 105,109 ----
}
if (nivQualite == 2) {
! return 0.3f;
}
if (nivQualite == 3) {
|
|
From: <mar...@us...> - 2003-03-26 01:04:15
|
Update of /cvsroot/madsserv/madsserv/src/client
In directory sc8-pr-cvs1:/tmp/cvs-serv14048/src/client
Modified Files:
Client.java ClientRTPManager.java
Log Message:
Amelioration des transitions
Index: Client.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/client/Client.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** Client.java 24 Mar 2003 15:34:52 -0000 1.15
--- Client.java 26 Mar 2003 01:03:41 -0000 1.16
***************
*** 124,129 ****
this.setTitle("Madsserv Client");
setAfficheStatusBar("Bienvenue");
! URLChoice = new TextField("file:///e:\\jmf\\lco.avi");
! AdServer = new TextField("137.194.132.36:5200");
menuFile.setLabel("File");
menuOpenURL.setLabel("Open URL");
--- 124,129 ----
this.setTitle("Madsserv Client");
setAfficheStatusBar("Bienvenue");
! URLChoice = new TextField("file:///c:\\temp\\lco.avi");
! AdServer = new TextField("137.194.8.97:5200");
menuFile.setLabel("File");
menuOpenURL.setLabel("Open URL");
***************
*** 174,178 ****
c.weightx = 0.0;
! c.gridwidth = 2;
panelSouth.add(statusBar, c);
--- 174,179 ----
c.weightx = 0.0;
! c.anchor = GridBagConstraints.WEST;
! // c.gridwidth = 1;
panelSouth.add(statusBar, c);
***************
*** 190,193 ****
--- 191,195 ----
c.gridwidth = GridBagConstraints.RELATIVE;
c.gridwidth = 1;
+ c.fill=GridBagConstraints.BOTH;
c.weightx = 0.0;
c.weighty = 1.0;
***************
*** 453,457 ****
public void actionPerformed(ActionEvent evt) {
! adaptee.boutongo_actionPerformed(evt);
}
}
--- 455,459 ----
public void actionPerformed(ActionEvent evt) {
! adaptee.boutonstop_actionPerformed(evt);
}
}
Index: ClientRTPManager.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/client/ClientRTPManager.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** ClientRTPManager.java 24 Mar 2003 02:54:24 -0000 1.12
--- ClientRTPManager.java 26 Mar 2003 01:03:41 -0000 1.13
***************
*** 109,113 ****
"javax.media.control.BufferControl");
if (bc != null) {
! bc.setBufferLength(10000);
}
--- 109,113 ----
"javax.media.control.BufferControl");
if (bc != null) {
! bc.setBufferLength(2000);
}
***************
*** 375,415 ****
myp.initialize();
-
//On synchronize ici la gestion du flux audio et du flux video
- System.out.println("Passage dans RealizeComplete : " + players.size());
Component vvc;
if ( (players.size() > 1) && (compteur == 1)) {
myq = (MyPlayer) players.elementAt(1 - i);
if (myq.player.getState() == Player.Realized) {
- System.err.println("Le player " + (1 - i) + " est realise");
if ( (vvc = p.getVisualComponent()) != null) {
- System.out.println("C'est de la video " + players.size());
if (p.getState() == Player.Realized) {
try {
p.addController(myq.player);
p.start();
client.setAfficheStatusBar("Diffusion en cours");
! addLog("playeur Video realise");
}
catch (Exception e) {
System.err.println("Incompatible Time Base 1");
client.showError("impossible de synchroniser les player");
! addLog("playeur Video pas realise");
}
}
}
else {
! System.out.println("C'est de l'audio " + players.size());
if (p.getState() == Player.Realized) {
try {
myq.player.addController(p);
myq.player.start();
client.setAfficheStatusBar("Diffusion en cours");
! addLog("playeur Video realise");
}
catch (Exception e) {
System.err.println("Incompatible Time Base 2");
client.showError("impossible de synchroniser les player");
! addLog("playeur Video pas realise");
}
}
--- 375,413 ----
myp.initialize();
//On synchronize ici la gestion du flux audio et du flux video
Component vvc;
if ( (players.size() > 1) && (compteur == 1)) {
myq = (MyPlayer) players.elementAt(1 - i);
if (myq.player.getState() == Player.Realized) {
if ( (vvc = p.getVisualComponent()) != null) {
if (p.getState() == Player.Realized) {
try {
+ myq.player.setTimeBase(p.getTimeBase());
p.addController(myq.player);
p.start();
client.setAfficheStatusBar("Diffusion en cours");
! addLog("player Video realise");
}
catch (Exception e) {
System.err.println("Incompatible Time Base 1");
client.showError("impossible de synchroniser les player");
! addLog("player Video pas realise");
}
}
}
else {
!
if (p.getState() == Player.Realized) {
try {
+ p.setTimeBase(myq.player.getTimeBase());
myq.player.addController(p);
myq.player.start();
client.setAfficheStatusBar("Diffusion en cours");
! addLog("player Video realise");
}
catch (Exception e) {
System.err.println("Incompatible Time Base 2");
client.showError("impossible de synchroniser les player");
! addLog("player Video pas realise");
}
}
***************
*** 453,456 ****
--- 451,455 ----
}
+
/**
* Retourne le temps actuel de lecture du media.
***************
*** 598,601 ****
--- 597,601 ----
}
+
/**
* Initialise le MyPlayer
|
|
From: <mar...@us...> - 2003-03-26 01:03:48
|
Update of /cvsroot/madsserv/madsserv/src/simulator
In directory sc8-pr-cvs1:/tmp/cvs-serv14048/src/simulator
Modified Files:
Simulator.java
Log Message:
Amelioration des transitions
Index: Simulator.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/simulator/Simulator.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** Simulator.java 24 Mar 2003 15:32:17 -0000 1.7
--- Simulator.java 26 Mar 2003 01:03:42 -0000 1.8
***************
*** 150,154 ****
stop = new JButton("Stop!");
stop.setPreferredSize(new Dimension(80, 25));
! stop.addActionListener(new Simulator_boutongo_ActionAdapter(this));
qualityLabel.setText("qualite client :");
--- 150,154 ----
stop = new JButton("Stop!");
stop.setPreferredSize(new Dimension(80, 25));
! stop.addActionListener(new Simulator_boutonstop_ActionAdapter(this));
qualityLabel.setText("qualite client :");
***************
*** 230,234 ****
/**
* Ferme le simulateur lors d'un clic sur exit.
! * @param e l'événement créé par un clic sur exit.
*/
public void itemExit_actionPerformed(ActionEvent e) {
--- 230,234 ----
/**
* Ferme le simulateur lors d'un clic sur exit.
! * @param e l'événement créé par un clic sur exit.
*/
public void itemExit_actionPerformed(ActionEvent e) {
***************
*** 264,268 ****
* Lance le traitement lié au clic sur le bouton Start.<br>
* Elle récupère l'identité du client ainsi que son
! * nouveau niveau de qualité, ouvre des sockets en direction du serveur
* et envoie ces informations.
* @param evt l'événement créé par un clic sur le
--- 264,268 ----
* Lance le traitement lié au clic sur le bouton Start.<br>
* Elle récupère l'identité du client ainsi que son
! * nouveau niveau de qualité, ouvre des sockets en direction du serveur
* et envoie ces informations.
* @param evt l'événement créé par un clic sur le
***************
*** 390,393 ****
--- 390,398 ----
dialogServerSimu.stop();
mySocket = null;
+ if (tableClients.getDataLength() > 0) {
+ for (int i = 0; i < tableClients.getDataLength(); i++) {
+ tableClients.removeRow(i);
+ }
+ }
}
***************
*** 487,491 ****
public void actionPerformed(ActionEvent evt) {
! adaptee.boutongo_actionPerformed(evt);
}
}
--- 492,496 ----
public void actionPerformed(ActionEvent evt) {
! adaptee.boutonstop_actionPerformed(evt);
}
}
***************
*** 514,517 ****
--- 519,527 ----
}
+ public int getDataLength() {
+ return getModel().getRowCount();
+ }
+
+
/**
* Insere un nouveau client dans la table.
***************
*** 550,553 ****
--- 560,568 ----
}
}
+
+ public void removeRow(int index) {
+ ( (DefaultTableModel) getModel()).removeRow(index);
+ }
+
/**
|
|
From: <car...@us...> - 2003-03-25 03:33:26
|
Update of /cvsroot/madsserv/madsserv/src/server/adaptability
In directory sc8-pr-cvs1:/tmp/cvs-serv20496
Modified Files:
GestionAdapta.java
Log Message:
petite correction sur la portee de la methode getJPEGQuality
Index: GestionAdapta.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/server/adaptability/GestionAdapta.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** GestionAdapta.java 24 Mar 2003 02:54:25 -0000 1.9
--- GestionAdapta.java 25 Mar 2003 03:33:22 -0000 1.10
***************
*** 100,104 ****
// Associe a chaque niveau de qualite un niveau de qualite JPEG utilise par Reencode.
! private float getJPEGQuality(int nivQualite) {
if (nivQualite == 1) {
return 0.5f;
--- 100,104 ----
// Associe a chaque niveau de qualite un niveau de qualite JPEG utilise par Reencode.
! public float getJPEGQuality(int nivQualite) {
if (nivQualite == 1) {
return 0.5f;
|
|
From: <mar...@us...> - 2003-03-24 16:52:49
|
Update of /cvsroot/madsserv/madsserv/src/server/processor
In directory sc8-pr-cvs1:/tmp/cvs-serv5443
Modified Files:
ThreadReencode.java
Log Message:
Possibilite de definir le niveau de qualite de l_encodage JPEG
Index: ThreadReencode.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/server/processor/ThreadReencode.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** ThreadReencode.java 24 Mar 2003 02:54:25 -0000 1.13
--- ThreadReencode.java 24 Mar 2003 16:52:44 -0000 1.14
***************
*** 1,498 ****
! /**
! * Projet Madsserv
! * ThreadReencode.java
! *
! * Module de conversion des fichiers multimedia.
! * Thread de conversion du fichier multimedia.
! *
! * @author Jean-Baptiste Mariotte
! */
!
[...967 lines suppressed...]
! Thread.sleep(4000);
! reencodeRef.streamingRef.endOfMedia();
! }
! catch (Exception e) {}
! }
! }
! }
! }
!
! /**
! * Méthode envoyant un message de log au module de log.
! * @param message le message à écrire dans le fichier log.
! */
! private void addLog(String message) {
! if(serverInitRef.log.LOG_ENABLED) {
! String logToSend = new String("ThreadReencode;" + reencodeRef.clientId + ";" + message);
! serverInitRef.log.writeLog(logToSend);
! }
! }
}
|
|
From: <dep...@us...> - 2003-03-24 15:34:58
|
Update of /cvsroot/madsserv/madsserv/src/client
In directory sc8-pr-cvs1:/tmp/cvs-serv15095
Modified Files:
Client.java
Log Message:
ajout du bouton stop
Index: Client.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/client/Client.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** Client.java 24 Mar 2003 02:54:24 -0000 1.14
--- Client.java 24 Mar 2003 15:34:52 -0000 1.15
***************
*** 36,39 ****
--- 36,40 ----
private TextField AdServer;
private Button go;
+ private Button stop;
private PlayerPanel playerPanel = null;
***************
*** 57,61 ****
* L'identité du client qui vient d'être crée.
*/
! public int clientID;
/**
--- 58,62 ----
* L'identité du client qui vient d'être crée.
*/
! public int clientID;
/**
***************
*** 142,145 ****
--- 143,150 ----
go.addActionListener(new Client_boutongo_ActionAdapter(this));
+ stop = new Button("Stop!");
+ stop.setSize(new Dimension(60, 15));
+ stop.addActionListener(new Client_boutonstop_ActionAdapter(this));
+
panelNorth.setBackground(new Color(236, 233, 216));
panelSouth.setBackground(new Color(236, 233, 216));
***************
*** 156,162 ****
panelSouth.add(formatJPEG, c);*/
! c.weightx = 0.0;
! c.gridwidth = 2;
! panelSouth.add(statusBar, c);
c.weightx = 1.0;
--- 161,169 ----
panelSouth.add(formatJPEG, c);*/
! c.weightx = 1.0;
! c.gridwidth = GridBagConstraints.RELATIVE;
! c.fill = GridBagConstraints.VERTICAL;
! c.anchor = GridBagConstraints.WEST;
! panelSouth.add(go, c);
c.weightx = 1.0;
***************
*** 164,168 ****
c.fill = GridBagConstraints.VERTICAL;
c.anchor = GridBagConstraints.EAST;
! panelSouth.add(go, c);
c.gridwidth = GridBagConstraints.REMAINDER;
--- 171,179 ----
c.fill = GridBagConstraints.VERTICAL;
c.anchor = GridBagConstraints.EAST;
! panelSouth.add(stop, c);
!
! c.weightx = 0.0;
! c.gridwidth = 2;
! panelSouth.add(statusBar, c);
c.gridwidth = GridBagConstraints.REMAINDER;
***************
*** 265,269 ****
/**
! * Deconnecte le client en stoppant les traitements de <code>DialogServer</code>
* et détruit les <code>DialogServer</code> <code>mySocket</code>.
*/
--- 276,280 ----
/**
! * Deconnecte le client en stoppant les traitements de <code>DialogServer</code>
* et détruit les <code>DialogServer</code> <code>mySocket</code>.
*/
***************
*** 275,278 ****
--- 286,305 ----
/**
+ * Est a l'ecoute de l'appuie sur le boutton stop et ferme dans ca cas la connexion avec le serveur
+ * @param evt l'evenement indiquant qu'on a appuye sur stop
+ */
+
+ public void boutonstop_actionPerformed(ActionEvent evt) {
+ String messageToSend[] = new String[1];
+ if (dialogServer != null) {
+ messageToSend[0] = "sortie du client";
+ dialogServer.sendMessage(DialogServer.END_CONNEXION_FROM_CLIENT,
+ messageToSend);
+ }
+ addLog("arret de la connexion du client");
+
+ }
+
+ /**
* Affiche dans ErrorPopup un message d'erreur.
* @param messageErreur le message d'erreur que l'on souhaite afficher.
***************
*** 284,288 ****
/**
* Renvoie l'InetAddress du serveur sur lequel il faut se connecter, cette adresse
! * est rentrée dans une zone de texte de l'interface graphique du client.
* @return InetAddress du serveur.
*/
--- 311,315 ----
/**
* Renvoie l'InetAddress du serveur sur lequel il faut se connecter, cette adresse
! * est rentrée dans une zone de texte de l'interface graphique du client.
* @return InetAddress du serveur.
*/
***************
*** 319,323 ****
/**
! * Renvoie l'URL du fichier multimedia que l'on souhaite visionner, cet URL est
* rentrée dans une zone de texte de l'interface graphique du client.
* @return l'adresse du media demandé.
--- 346,350 ----
/**
! * Renvoie l'URL du fichier multimedia que l'on souhaite visionner, cet URL est
* rentrée dans une zone de texte de l'interface graphique du client.
* @return l'adresse du media demandé.
***************
*** 413,414 ****
--- 440,457 ----
}
}
+ /**
+ * <code>Client_boutonstop_ActionAdapter</code> Ecoute pour savoir si on clique sur le bouton go et envoie alors l'evenement
+ */
+
+ class Client_boutonstop_ActionAdapter
+ implements ActionListener {
+ Client adaptee;
+
+ Client_boutonstop_ActionAdapter(Client adaptee) {
+ this.adaptee = adaptee;
+ }
+
+ public void actionPerformed(ActionEvent evt) {
+ adaptee.boutongo_actionPerformed(evt);
+ }
+ }
\ No newline at end of file
|
|
From: <dep...@us...> - 2003-03-24 15:32:23
|
Update of /cvsroot/madsserv/madsserv/src/simulator
In directory sc8-pr-cvs1:/tmp/cvs-serv12236
Modified Files:
Simulator.java
Log Message:
simulateur avec le bouton stop et la status bar
Index: Simulator.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/simulator/Simulator.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** Simulator.java 24 Mar 2003 02:54:25 -0000 1.6
--- Simulator.java 24 Mar 2003 15:32:17 -0000 1.7
***************
*** 50,53 ****
--- 50,54 ----
private MenuItem itemExit = new MenuItem();
private JButton go;
+ private JButton stop;
//Declaration de la zone de texte
***************
*** 58,65 ****
private Label qualityLabel = new Label();
private Label clientIDLabel = new Label();
! private Label erreurLabel = new Label();
private Label AdLabel = new Label();
private Label nivQualiteLabel = new Label();
private Label tabClientIdLabel = new Label();
//graphique
--- 59,67 ----
private Label qualityLabel = new Label();
private Label clientIDLabel = new Label();
! private Label scriptLabel = new Label();
private Label AdLabel = new Label();
private Label nivQualiteLabel = new Label();
private Label tabClientIdLabel = new Label();
+ private Label statusBar = new Label();
//graphique
***************
*** 120,124 ****
tableClients.setgraph(jPanelReport);
! //cr�ation de la zone de texte
qualityChoice = new TextField("");
clientId = new TextField("");
--- 122,126 ----
tableClients.setgraph(jPanelReport);
! //creation de la zone de texte
qualityChoice = new TextField("");
clientId = new TextField("");
***************
*** 131,134 ****
--- 133,137 ----
itemOpenClient.setLabel("open Simulateur");
itemExit.addActionListener(new Simulator_itemExit_ActionAdapter(this));
+ setAfficheStatusBar("Simulateur deconnecte");
//construction des menus
***************
*** 142,151 ****
//cr�ation du boutton Start
go = new JButton("Start!");
! go.setPreferredSize(new Dimension(70, 25));
go.addActionListener(new Simulator_boutongo_ActionAdapter(this));
! qualityLabel.setText("qualit� client :");
! clientIDLabel.setText("Identit� client:");
! erreurLabel.setText("script:");
AdLabel.setText("Serv :");
tabClientIdLabel.setText("Client");
--- 145,158 ----
//cr�ation du boutton Start
go = new JButton("Start!");
! go.setPreferredSize(new Dimension(80, 25));
go.addActionListener(new Simulator_boutongo_ActionAdapter(this));
! stop = new JButton("Stop!");
! stop.setPreferredSize(new Dimension(80, 25));
! stop.addActionListener(new Simulator_boutongo_ActionAdapter(this));
!
! qualityLabel.setText("qualite client :");
! clientIDLabel.setText("Identite client:");
! scriptLabel.setText("script:");
AdLabel.setText("Serv :");
tabClientIdLabel.setText("Client");
***************
*** 155,159 ****
qualityLabel.setSize(new Dimension(50, 15));
clientIDLabel.setSize(new Dimension(50, 15));
! erreurLabel.setSize(new Dimension(50, 15));
AdLabel.setSize(new Dimension(50, 15));
--- 162,166 ----
qualityLabel.setSize(new Dimension(50, 15));
clientIDLabel.setSize(new Dimension(50, 15));
! scriptLabel.setSize(new Dimension(50, 15));
AdLabel.setSize(new Dimension(50, 15));
***************
*** 161,165 ****
panelSouth.setBackground(new Color(236, 230, 230));
! panelSouth.setLayout(gridBagLayoutSouth);
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.BOTH;
--- 168,172 ----
panelSouth.setBackground(new Color(236, 230, 230));
! panelNorth.setLayout(gridBagLayoutNorth);
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.BOTH;
***************
*** 167,202 ****
c.weightx = 0.0;
c.weighty = 1.0;
! panelSouth.add(clientIDLabel, c);
c.gridwidth = GridBagConstraints.REMAINDER;
c.weightx = 1.0;
! panelSouth.add(clientId, c);
c.gridwidth = GridBagConstraints.RELATIVE;
c.weightx = 0.0;
! panelSouth.add(qualityLabel, c);
c.weightx = 1.0;
! panelSouth.add(qualityChoice, c);
c.gridwidth = GridBagConstraints.RELATIVE;
- panelNorth.setLayout(gridBagLayoutNorth);
c.fill = GridBagConstraints.BOTH;
c.insets = new Insets(1, 5, 1, 5);
c.weightx = 0.0;
c.weighty = 1.0;
! panelNorth.add(erreurLabel, c);
c.gridwidth = GridBagConstraints.REMAINDER;
c.weightx = 1.0;
! panelNorth.add(script, c);
c.gridwidth = GridBagConstraints.RELATIVE;
c.weightx = 0.0;
! panelNorth.add(AdLabel, c);
c.weightx = 1.0;
c.gridwidth = GridBagConstraints.REMAINDER;
! panelNorth.add(AdServer, c);
c.weightx = 0.0;
! //c.gridwidth = GridBagConstraints.REMAINDER;
! c.fill = GridBagConstraints.VERTICAL;
! panelNorth.add(go, c);
contentPane.add(panelSouth, BorderLayout.SOUTH);
--- 174,225 ----
c.weightx = 0.0;
c.weighty = 1.0;
! panelNorth.add(scriptLabel, c);
c.gridwidth = GridBagConstraints.REMAINDER;
c.weightx = 1.0;
! panelNorth.add(script, c);
!
c.gridwidth = GridBagConstraints.RELATIVE;
c.weightx = 0.0;
! panelNorth.add(AdLabel, c);
c.weightx = 1.0;
! c.gridwidth = GridBagConstraints.REMAINDER;
! panelNorth.add(AdServer, c);
!
! c.weightx = 0.0;
c.gridwidth = GridBagConstraints.RELATIVE;
+ c.fill = GridBagConstraints.VERTICAL;
+ c.anchor = GridBagConstraints.WEST;
+ panelNorth.add(go, c);
+
+ c.weightx = 1.0;
+ c.gridwidth = GridBagConstraints.REMAINDER;
+ c.fill = GridBagConstraints.VERTICAL;
+ c.anchor = GridBagConstraints.EAST;
+ panelNorth.add(stop, c);
+
+ panelSouth.setLayout(gridBagLayoutSouth);
c.fill = GridBagConstraints.BOTH;
c.insets = new Insets(1, 5, 1, 5);
+
+ c.gridwidth = GridBagConstraints.RELATIVE;
c.weightx = 0.0;
c.weighty = 1.0;
! panelSouth.add(clientIDLabel, c);
c.gridwidth = GridBagConstraints.REMAINDER;
c.weightx = 1.0;
! panelSouth.add(clientId, c);
c.gridwidth = GridBagConstraints.RELATIVE;
c.weightx = 0.0;
! panelSouth.add(qualityLabel, c);
c.weightx = 1.0;
c.gridwidth = GridBagConstraints.REMAINDER;
! panelSouth.add(qualityChoice, c);
c.weightx = 0.0;
! c.gridwidth = 2;
! panelSouth.add(statusBar, c);
! c.gridwidth = GridBagConstraints.REMAINDER;
contentPane.add(panelSouth, BorderLayout.SOUTH);
***************
*** 207,211 ****
/**
* Ferme le simulateur lors d'un clic sur exit.
! * @param e l'événement créé par un clic sur exit.
*/
public void itemExit_actionPerformed(ActionEvent e) {
--- 230,234 ----
/**
* Ferme le simulateur lors d'un clic sur exit.
! * @param e l'événement créé par un clic sur exit.
*/
public void itemExit_actionPerformed(ActionEvent e) {
***************
*** 214,217 ****
--- 237,242 ----
messageToSend[0] = "fin de la connexion";
dialogServerSimu.sendMessage(DECONNEXION_FROM_SIMU, messageToSend);
+ setAfficheStatusBar("Simulateur Deconnecte");
+ addLog("Fermeture du simulateur");
log.close();
System.exit(0);
***************
*** 239,243 ****
* Lance le traitement lié au clic sur le bouton Start.<br>
* Elle récupère l'identité du client ainsi que son
! * nouveau niveau de qualité, ouvre des sockets en direction du serveur
* et envoie ces informations.
* @param evt l'événement créé par un clic sur le
--- 264,268 ----
* Lance le traitement lié au clic sur le bouton Start.<br>
* Elle récupère l'identité du client ainsi que son
! * nouveau niveau de qualité, ouvre des sockets en direction du serveur
* et envoie ces informations.
* @param evt l'événement créé par un clic sur le
***************
*** 251,255 ****
try {
mySocket = new Socket(getAddressServer(), getServerPort());
! System.out.println("Simulateur demarre");
}
catch (Exception e) {
--- 276,280 ----
try {
mySocket = new Socket(getAddressServer(), getServerPort());
! setAfficheStatusBar("Simulateur demarre");
}
catch (Exception e) {
***************
*** 259,265 ****
dialogServerSimu = new DialogServerSimu(mySocket, this);
dialogServerSimu.start();
! if (getScript().compareTo("") != 0)
! {
! interpreteScript = new Script(this,getScript());
}
}
--- 284,289 ----
dialogServerSimu = new DialogServerSimu(mySocket, this);
dialogServerSimu.start();
! if (getScript().compareTo("") != 0) {
! interpreteScript = new Script(this, getScript());
}
}
***************
*** 280,284 ****
/**
! * Permet d'obtenir l'InetAddress du serveur sur lequel il faut se connecter.<br>
* Cette adresse est rentrée à la main dans une zone de texte
* sur l'interface graphique du simulateur.
--- 304,321 ----
/**
! * Est a l'ecoute de l'appuie sur le boutton stop et ferme dans ca cas la connexion avec le serveur
! * @param evt l'evenement indiquant qu'on a appuye sur stop
! */
! public void boutonstop_actionPerformed(ActionEvent evt) {
! String messageToSend[] = new String[1];
! messageToSend[0] = "fin de la connexion";
! dialogServerSimu.sendMessage(DECONNEXION_FROM_SIMU, messageToSend);
! setAfficheStatusBar("Simulateur Deconnecte");
! addLog("Deconnexion du simulateur");
!
! }
!
! /**
! * Permet d'obtenir l'InetAddress du serveur sur lequel il faut se connecter.<br>
* Cette adresse est rentrée à la main dans une zone de texte
* sur l'interface graphique du simulateur.
***************
*** 304,308 ****
* Ce numéro de port est rentré dans une zone de texte sur
* l'interface graphique du simulateur.
! * @return int numéro du port sur lequel on doit se connecter au serveur.
*/
public int getServerPort() {
--- 341,345 ----
* Ce numéro de port est rentré dans une zone de texte sur
* l'interface graphique du simulateur.
! * @return int numéro du port sur lequel on doit se connecter au serveur.
*/
public int getServerPort() {
***************
*** 356,359 ****
--- 393,404 ----
/**
+ * Permet d'afficher en bas du simulateur un message dans la barre d'état
+ * @param _message le message ennvoyé par le serveur ou par des modules du client.
+ */
+ public void setAfficheStatusBar(String _message) {
+ statusBar.setText(_message);
+ }
+
+ /**
* Affiche un message dans une fenêtre "pop up".
* @param messageErreur message que l'on veut afficher.
***************
*** 419,422 ****
--- 464,495 ----
/**
+ * Classe qui va créer un objet {@link Simulator} sur lequel on va
+ * définir les méthodes pour le bouton stop.
+ */
+
+ class Simulator_boutonstop_ActionAdapter
+ implements ActionListener {
+ Simulator adaptee;
+ /**
+ * Contructeur de la classe.
+ * @param adaptee référence du simulateu correspondant.
+ */
+
+ Simulator_boutonstop_ActionAdapter(Simulator adaptee) {
+ this.adaptee = adaptee;
+ }
+
+ /**
+ * Appelle la méthode {@link Simulator#boutongo_actionPerformed} de la
+ * classe {@link Simulator}.
+ * @param e l'événement si on clique sur Start.
+ */
+
+ public void actionPerformed(ActionEvent evt) {
+ adaptee.boutongo_actionPerformed(evt);
+ }
+ }
+
+ /**
* Classe qui permet de gérer la table du simulateur de PDA clients
* connectés au serveur.
***************
*** 574,576 ****
}
! }
--- 647,649 ----
}
! }
\ No newline at end of file
|
|
From: <car...@us...> - 2003-03-24 02:55:28
|
Update of /cvsroot/madsserv/madsserv/src/simulator In directory sc8-pr-cvs1:/tmp/cvs-serv22209 Added Files: DialogServerSimu.java Removed Files: DialogServer.java Log Message: Modification du nom de DialogServer du simulateur --- NEW FILE: DialogServerSimu.java --- /** * Projet Madsserv * DialogServer.java * * Module de simulation des changements de qualite. * * @author Christele Champagnat */ import java.util.*; import java.io.*; import java.net.*; import java.lang.Object.*; import java.lang.System.*; /** * DialogServer est la classe qui hérite de la classe dialogSocket et qui * gère les dialogues avec le serveur.<br> * Il y a une classe instanciée par client connecté. * @author Christele Champagnat */ public class DialogServerSimu extends DialogSocket { final static int UPDATE_FROM_SERVER = 1; final static int UPDATE_FROM_SIMU = 2; final static int CLIENT_DECONNEXION = 3; final static int DECONNEXION_FROM_SIMU = 4; final static int DECONNEXION_FROM_SERVER = 5; private Simulator simulator; /** * Constructeur de la classe */ public DialogServerSimu(Socket _socketServer, Simulator _simulator) { super(_socketServer); simulator = _simulator; clientID = -1; } /** * Méthode qui a été déclaré abstraite dans * DialogSocket et qui gère l'arrivée de nouveaux messages du serveur. * @param _type type de message qui arrive (c'est un entier). * @param _message tableau de chaîne de caractères qui contient * les messages du serveur. */ public void incomingMessage(int _type, String[] _message) { int lgth = _message.length; int qualityLevel = 0; switch (_type) { //message de deconnexion du simulateur case DECONNEXION_FROM_SERVER: { //lecture du deuxieme champ : ClientID System.out.println(_message[0]); simulator.endConnexion(); addLog("deconnexion du Server"); break; } //effacement d'un client de la table case CLIENT_DECONNEXION: { //lecture du deuxieme champ : ClientID try { clientID = Integer.parseInt(_message[0]); } catch (NumberFormatException e) { System.out.println("Le deuxieme champ du message est incorrect"); } System.out.println("On efface le client : " + _message[0]); addLog("effacement Client : " + clientID); simulator.tableClients.removeClientRecord(clientID); break; } //mise a jour de la table des clients (nouveau ou changement de qualite) case UPDATE_FROM_SERVER: { //lecture du deuxieme champ : ClientID try { clientID = Integer.parseInt(_message[0]); } catch (NumberFormatException e) { System.out.println("Le deuxieme champ du message est incorrect"); } //lecture du troisieme champ du message : portBase try { qualityLevel = Integer.parseInt(_message[1]); } catch (NumberFormatException e) { System.out.println("Le troisieme champ du message est incorrect"); } if (simulator.tableClients.getRowForClient(clientID) == -1) { simulator.tableClients.newClientRecord(clientID, qualityLevel); addLog("ajout d'un nouveau client;" + _message[0].concat(";"+ _message[1])); } else { simulator.tableClients.updateClientRecord(clientID, qualityLevel); addLog("mise � jour du client;" + _message[0].concat(";" + _message[1])); } } } } /** * Envoie les messages sur le Socket. * @param _type le type de message à envoyer. * @param _message le message à envoyer. */ public void sendMessage(int _type, String[] _message) { threadOutput = new ThreadWrite("Thread d'ecriture ID", output, this); String[] messageToSend = null; if (_message == null) { simulator.showError("message a envoye null"); } else { messageToSend = new String[_message.length]; messageToSend[0] = String.valueOf(clientID); for (int i = 0; i < _message.length; i++) { messageToSend[i] = _message[i]; } threadOutput.setMessageToSend(_type, messageToSend); threadOutput.start(); } } /** * Ajoute des Log au fichier de Log. * @param message le message à envoyer. */ private void addLog(String message) { String logToSend = new String("DialogServer;" + message); try { simulator.log.writeLog(logToSend); } catch (Exception e) { } } /** * Ferme le client lors d'une déconnexion brutale du serveur. */ public void resetByRemote() { simulator.endConnexion(); } } --- DialogServer.java DELETED --- |
|
From: <car...@us...> - 2003-03-24 02:54:30
|
Update of /cvsroot/madsserv/madsserv/src/server In directory sc8-pr-cvs1:/tmp/cvs-serv21811/server Modified Files: DialogClient.java DialogSimulator.java DialogSocket.java ErrNoListen.java ServerFrame.java ServerInit.java ThreadListenClients.java ThreadListenSimulator.java ThreadRead.java ThreadWrite.java Added Files: MadsservServer.java Removed Files: TestServer.java Log Message: Version stable et fonctionnelle --- NEW FILE: MadsservServer.java --- import java.awt.*; import java.net.*; /** * <code>MadsservServer</code> contient la methode main du serveur et se charge * de disposer correctement la fenetre a l'ecran. * @author Julien Carbonell * @see ServerFrame **/ public class MadsservServer { private boolean packFrame = true; /** * Constructeur */ public MadsservServer() { ServerFrame frame = new ServerFrame(); if (packFrame) { frame.pack(); } else { frame.validate(); } // On centre ici la fenetre Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = frame.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } frame.setLocation( (screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); frame.setVisible(true); } /** * Lance le serveur du projet Madsserv */ public static void main(String[] args) { new MadsservServer(); } } Index: DialogClient.java =================================================================== RCS file: /cvsroot/madsserv/madsserv/src/server/DialogClient.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** DialogClient.java 21 Mar 2003 04:08:24 -0000 1.9 --- DialogClient.java 24 Mar 2003 02:54:24 -0000 1.10 *************** *** 2,12 **** /** ! * <code>DialogClient</code> gere la communication par socket du serveur vers le ! * client grace a deux threads (lecture et ecriture). <code>DialogClient</code> ! * est dedie a un client. * <p> ! * <code>DialogClient</code> fournit des methodes d'envoi de message et de ! * reception de message en utilisant des threads de classe {@link ThreadRead} et ! * {@link ThreadWrite} pour acceder au socket. * @see DialogSocket * @see ThreadRead --- 2,12 ---- /** ! * <code>DialogClient</code> gère la communication par socket entre le serveur et le ! * client (côté serveur) grâce à deux threads (lecture et écriture). <code>DialogClient</code> ! * est dedié à un client. * <p> ! * <code>DialogClient</code> fournit des méthodes d'envoi de messages et de ! * réception de messages en utilisant des threads de classe {@link ThreadRead} et ! * {@link ThreadWrite} pour accéder au socket. * @see DialogSocket * @see ThreadRead *************** *** 18,38 **** extends DialogSocket { ! final static int SEND_ID = 1; ! final static int REQUEST_MEDIA = 2; ! final static int PROCESS_MEDIA = 3; ! final static int END_CONNEXION_FROM_CLIENT = 4; ! final static int END_CONNEXION_FROM_SERVER = 5; ! final static int REPEAT_MESSAGE = 6; ! final static int REQUEST_CURRENT_TIME = 7; ! final static int ANSWER_CURRENT_TIME = 8; ! final static int ERROR_MESSAGE = 9; ! final static int INFORMATION = 11; ! // reference sur l'objet parent de classe ServerInit private ServerInit serverInit; /** * Constructeur de <code>DialogClient</code> ! * @param _clientID ID du client auquel est dedie <code>DialogClient</code>. * @param _socketClient le {@link Socket} de communication avec le client. * @param _serverInit le {@link ServerInit} parent. --- 18,68 ---- extends DialogSocket { ! /** ! * Type du message envoyant au client l'ID affectée. ! */ ! public final static int SEND_ID = 1; ! /** ! * Type du message provenant du client contenant l'adresse du media demandé. ! */ ! public final static int REQUEST_MEDIA = 2; ! /** ! * Type du message indiquant au client qu'il peut instancier le RTPManager. ! */ ! public final static int PROCESS_MEDIA = 3; ! /** ! * Type du message envoyé par le client indiquant qu'il coupe la connexion. ! */ ! public final static int END_CONNEXION_FROM_CLIENT = 4; ! /** ! * Type du message envoyé au client pour l'avertir de la déconnexion. ! */ ! public final static int END_CONNEXION_FROM_SERVER = 5; ! /** ! * Type du message envoyé par le client pour demander la répétition du message. ! */ ! public final static int REPEAT_MESSAGE = 6; ! /** ! * Type du message envoyé au client pour lui demander le temps media courant. ! */ ! public final static int REQUEST_CURRENT_TIME = 7; ! /** ! * Type du message envoyé par le client communiquant le temps media courant. ! */ ! public final static int ANSWER_CURRENT_TIME = 8; ! /** ! * Type du message envoyé au client pour lui signaler une erreur. ! */ ! public final static int ERROR_MESSAGE = 9; ! /** ! * Type du message envoyé au client transmettant des informations contextuelles. ! */ ! public final static int INFORMATION = 11; ! // Reference sur l'objet parent de classe ServerInit private ServerInit serverInit; /** * Constructeur de <code>DialogClient</code> ! * @param _clientID ID du client auquel est dédié <code>DialogClient</code>. * @param _socketClient le {@link Socket} de communication avec le client. * @param _serverInit le {@link ServerInit} parent. *************** *** 44,56 **** clientID = _clientID; if (clientID == -1) { - /* serverInit.setIP(clientID, - mySocket.getInetAddress().getHostAddress().toString()); - } - else {*/ String[] warning = new String[1]; warning[0] = "Trop de clients connectes au serveur."; - // System.out.println("Envoi du message " + warning[0]); sendMessage(ERROR_MESSAGE, warning); try { --- 74,83 ---- clientID = _clientID; + // Si le serveur a atteint le nombre maximum de client il renvoie une ID de -1 + // Le client est prevenu que le serveur est trop charge puis il est deconnecte if (clientID == -1) { String[] warning = new String[1]; warning[0] = "Trop de clients connectes au serveur."; sendMessage(ERROR_MESSAGE, warning); try { *************** *** 58,62 **** } catch (Exception e) { - } this.stop(); --- 85,88 ---- *************** *** 65,74 **** /** ! * Traite l'arrivee d'un nouveau message sur le socket. Le message passe en ! * parametre de <code>incomingMessage</code> est deja pre-formate sous forme * d'un tableau de {@link String}. * @param _type le type du message. * @param _message le tableau de <code>String</code> contenant les champs du ! * message recu. */ public void incomingMessage(int _type, String[] _message) { --- 91,100 ---- /** ! * Traite l'arrivée d'un nouveau message sur le socket. Le message passé en ! * paramètre de <code>incomingMessage</code> est déjà pré-formaté sous forme * d'un tableau de {@link String}. * @param _type le type du message. * @param _message le tableau de <code>String</code> contenant les champs du ! * message reçu. */ public void incomingMessage(int _type, String[] _message) { *************** *** 87,100 **** switch (_type) { case REQUEST_MEDIA: { String[] messageToSend = new String[1]; try { serverInit.setMediaAddress(clientID, _message[1]); ! System.out.println("Nouvelle URL pour le client " + clientID + ! ": " + ! _message[1]); ! serverInit.addLog("ID"+clientID+";Reception message type "+_type+";Nouvelle URL : "+_message[1]+";"); serverInit.createReencode(clientID, _message[1]); ! serverInit.setQualityLevel(clientID, serverInit.getQualityLevel(clientID), true); } catch (Exception e) { --- 113,126 ---- switch (_type) { + // Reception de l'URL media case REQUEST_MEDIA: { String[] messageToSend = new String[1]; try { serverInit.setMediaAddress(clientID, _message[1]); ! serverInit.addLog("ID" + clientID + ";Reception message type " + ! _type + ";Nouvelle URL : " + _message[1] + ";"); serverInit.createReencode(clientID, _message[1]); ! serverInit.setQualityLevel(clientID, ! serverInit.getQualityLevel(clientID), true); } catch (Exception e) { *************** *** 103,108 **** break; } case END_CONNEXION_FROM_CLIENT: { ! serverInit.addLog("ID"+clientID+";Reception message type "+_type+";"+_message[1]+";"); serverInit.endConnexionClient(clientID); break; --- 129,136 ---- break; } + // Le client a envoye un message de deconnexion case END_CONNEXION_FROM_CLIENT: { ! serverInit.addLog("ID" + clientID + ";Reception message type " + ! _type + ";" + _message[1] + ";"); serverInit.endConnexionClient(clientID); break; *************** *** 112,119 **** break; } case ANSWER_CURRENT_TIME: { double currentMediaTime; try { ! serverInit.addLog("ID"+clientID+";Reception message type "+_type+";Temps media="+_message[1]+";"); currentMediaTime = Double.parseDouble(_message[1]); serverInit.setCurrentMediaTime(clientID, currentMediaTime); --- 140,149 ---- break; } + // Le client renvoie son temps media courant case ANSWER_CURRENT_TIME: { double currentMediaTime; try { ! serverInit.addLog("ID" + clientID + ";Reception message type " + ! _type + ";Temps media=" + _message[1] + ";"); currentMediaTime = Double.parseDouble(_message[1]); serverInit.setCurrentMediaTime(clientID, currentMediaTime); *************** *** 135,139 **** /** ! * ErrMessage prend en charge les erreurs survenues lors de la reception de message sur le socket. */ class ErrMessageServer --- 165,169 ---- /** ! * ErrMessage prend en charge les erreurs survenues lors de la réception de messages sur le socket. */ class ErrMessageServer Index: DialogSimulator.java =================================================================== RCS file: /cvsroot/madsserv/madsserv/src/server/DialogSimulator.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** DialogSimulator.java 21 Mar 2003 04:08:24 -0000 1.3 --- DialogSimulator.java 24 Mar 2003 02:54:25 -0000 1.4 *************** *** 2,12 **** /** ! * <code>DialogClient</code> gere la communication par socket du serveur vers le ! * client grace a deux threads (lecture et ecriture). <code>DialogClient</code> ! * est dedie a un client. * <p> ! * <code>DialogClient</code> fournit des methodes d'envoi de message et de ! * reception de message en utilisant des threads de classe {@link ThreadRead} et ! * {@link ThreadWrite} pour acceder au socket. * @see DialogSocket * @see ThreadRead --- 2,11 ---- /** ! * <code>DialogSimulator</code> gère la communication par socket entre le serveur et le ! * simulateur (côté serveur) grâce à deux threads (lecture et écriture). * <p> ! * <code>DialogSimulator</code> fournit des méthodes d'envoi de messages et de ! * réception de messages en utilisant des threads de classe {@link ThreadRead} et ! * {@link ThreadWrite} pour accéder au socket. * @see DialogSocket * @see ThreadRead *************** *** 18,28 **** extends DialogSocket { ! final static int UPDATE_FROM_SERVER = 1; ! final static int UPDATE_FROM_SIMU = 2; ! final static int CLIENT_DECONNEXION = 3; ! final static int DECONNEXION_FROM_SIMU = 4; ! final static int DECONNEXION_FROM_SERVER = 5; ! // reference sur l'objet parent de classe ServerInit private ServerInit serverInit; --- 17,42 ---- extends DialogSocket { ! /** ! * Type du message envoye au simulateur pour mettre a jour sa table clients. ! */ ! public final static int UPDATE_FROM_SERVER = 1; ! /** ! * Type du message envoye par le simulateur pour signaler un changement de qualite. ! */ ! public final static int UPDATE_FROM_SIMU = 2; ! /** ! * Type du message envoye au simulateur pour signaler la deconnexion d'un client. ! */ ! public final static int CLIENT_DECONNEXION = 3; ! /** ! * Type du message envoye par le simulateur pour signaler sa deconnexion. ! */ ! public final static int DECONNEXION_FROM_SIMU = 4; ! /** ! * Type du message envoye au simulateur pour signaler sa deconnexion. ! */ ! public final static int DECONNEXION_FROM_SERVER = 5; ! // Reference sur l'objet parent de classe ServerInit private ServerInit serverInit; *************** *** 56,59 **** --- 70,74 ---- else { switch (_type) { + // Reception d'un changement de niveau de qualite case UPDATE_FROM_SIMU: { try { *************** *** 73,76 **** --- 88,92 ---- break; } + // Le simulateur se deconnecte case DECONNEXION_FROM_SIMU: { serverInit.endConnexionSimulator("Deconnexion du simulateur"); *************** *** 84,88 **** --- 100,106 ---- String logDesc = ""; + // Creation d'un thread d'ecriture sur le socket threadOutput = new ThreadWrite("Thread d'ecriture Simulateur", output, this); + // On met le message dans un seul String if (_message != null) { for (int i = 0; i < _message.length; i++) { Index: DialogSocket.java =================================================================== RCS file: /cvsroot/madsserv/madsserv/src/server/DialogSocket.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** DialogSocket.java 21 Mar 2003 04:08:24 -0000 1.6 --- DialogSocket.java 24 Mar 2003 02:54:25 -0000 1.7 *************** *** 3,14 **** /** ! * <code>DialogServer</code> fournit le modele d'objet permettant la gestion ! * de la communication par socket entre deux stations grace a deux threads ! * (lecture et ecriture). <code>DialogSocket</code> assure une communication ! * dediee. * <p> ! * <code>DialogServer</code> fournit une methode d'envoi de messages sur le ! * socket (par l'intermediaire de {@link ThreadWrite} et declare la methode ! * abstraite de reception des messages. * @see ThreadRead * @see ThreadWrite --- 3,14 ---- /** ! * <code>DialogServer</code> fournit le modèle de classe permettant la gestion ! * de la communication par socket entre deux stations grâce a deux threads ! * (lecture et écriture). <code>DialogSocket</code> assure une communication ! * dédiée. * <p> ! * <code>DialogSocket</code> fournit une méthode d'envoi de messages sur le ! * socket (par l'intermédiaire de {@link ThreadWrite}) et déclare une méthode abstraite ! * de traitement des messages reçus (par l'intermédiaire de {@link ThreadRead}). * @see ThreadRead * @see ThreadWrite *************** *** 18,39 **** public abstract class DialogSocket { ! // identite du client protected int clientID; ! // socket gere par DialogSocket protected Socket mySocket; ! // streams d'entree et de sortie protected PrintWriter output; protected InputStreamReader input; protected BufferedReader binput; ! // Thread d'entree et thread de sortie protected ThreadRead threadInput; protected ThreadWrite threadOutput; /** * Constructeur de <code>DialogSocket</code>. ! * @param _mySocket le {@link Socket} de communication. */ --- 18,56 ---- public abstract class DialogSocket { ! /** ! * Identité du client ! */ protected int clientID; ! /** ! * Le socket géré par <code>DialogSocket</code> ! */ protected Socket mySocket; ! /** ! * <code>PrintWriter</code> lié au flux de sortie de <code>mySocket</code>. ! */ protected PrintWriter output; + /** + * <code>InputStreamReader</code> lié au flux d'entrée de <code>mySocket</code>. + */ protected InputStreamReader input; + /** + * <code>BufferedReader</code> lié à <code>input</code>. + */ protected BufferedReader binput; ! /** ! * Thread de lecture de <code>mySocket</code>. ! */ protected ThreadRead threadInput; + /** + * Thread d'écriture sur <code>mySocket</code>. + */ protected ThreadWrite threadOutput; /** * Constructeur de <code>DialogSocket</code>. ! * @param _mySocket le <code>Socket</code> de communication. */ *************** *** 42,45 **** --- 59,63 ---- try { + // Ouverture des flux d'entree et de sortie sur le socket output = new PrintWriter(mySocket.getOutputStream()); input = new InputStreamReader(mySocket.getInputStream()); *************** *** 54,61 **** /** ! * Traite l'arrivee d'un nouveau message sur le socket. * @param _type le type du message. * @param _message le tableau de <code>String</code> contenant les champs du ! * message recu. */ --- 72,79 ---- /** ! * Traite l'arrivée d'un nouveau message sur le socket. * @param _type le type du message. * @param _message le tableau de <code>String</code> contenant les champs du ! * message reçu. */ *************** *** 63,80 **** /** ! * Traite une deconnexion brutale de l'utilisateur distant du socket. */ public abstract void resetByRemote(); /** ! * Traite la demande d'envoi d'un message sur le socket. Le message a envoyer * est fourni sous la forme d'un tableau de {@link String} contenant les ! * champs du message * @param _type le type du message. * @param _message le tableau de <code>String</code> contenant les champs du ! * message a envoyer. */ public synchronized void sendMessage(int _type, String[] _message) { threadOutput = new ThreadWrite("Thread d'ecriture ID", output, this); String[] messageToSend; --- 81,99 ---- /** ! * Traite une déconnexion brutale de l'utilisateur distant du socket. */ public abstract void resetByRemote(); /** ! * Traite la demande d'envoi d'un message sur le socket. Le message à envoyer * est fourni sous la forme d'un tableau de {@link String} contenant les ! * champs du message. * @param _type le type du message. * @param _message le tableau de <code>String</code> contenant les champs du ! * message à envoyer. */ public synchronized void sendMessage(int _type, String[] _message) { + // Creation d'un thread d'ecriture sur le socket threadOutput = new ThreadWrite("Thread d'ecriture ID", output, this); String[] messageToSend; *************** *** 96,100 **** /** * Renvoie l'ID du client. ! * @return ID du client. */ --- 115,119 ---- /** * Renvoie l'ID du client. ! * @return l'ID du client. */ *************** *** 104,108 **** /** ! * Renvoie l'etat du socket. */ public boolean socketIsClosed() { --- 123,127 ---- /** ! * Renvoie l'état du socket. */ public boolean socketIsClosed() { *************** *** 111,115 **** /** ! * Demarre l'ecoute du socket */ --- 130,134 ---- /** ! * Lance l'écoute du socket. */ *************** *** 124,134 **** public synchronized void stop() { try { - // System.err.println("j'entre dans le stop de dialog socket"); if (!mySocket.isClosed()) { mySocket.close(); } - - // System.err.println("le socket est mort"); - // System.out.println("Fin DialogSocket " + clientID); } catch (Exception e) {} --- 143,149 ---- Index: ErrNoListen.java =================================================================== RCS file: /cvsroot/madsserv/madsserv/src/server/ErrNoListen.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ErrNoListen.java 21 Mar 2003 04:08:24 -0000 1.4 --- ErrNoListen.java 24 Mar 2003 02:54:25 -0000 1.5 *************** *** 2,16 **** /** ! * Exception levee quand un <code>ServerSocket</code> n'arrive pas a ouvrir * le socket. * @see java.net.ServerSocket * @author Julien Carbonell */ ! public class ErrNoListen extends Exception { ! ! final static int NO_LISTEN_CLIENTS = 0; ! final static int NO_LISTEN_SIMULATOR = 1; protected int type; protected int port; --- 2,28 ---- /** ! * Exception lévée quand un <code>ServerSocket</code> n'arrive pas à ouvrir * le socket. * @see java.net.ServerSocket * @author Julien Carbonell */ ! public class ErrNoListen ! extends Exception { + /** + * Type de l'erreur quand on n'arrive pas à ouvrir le socket d'écoute des connexions clients. + */ + public final static int NO_LISTEN_CLIENTS = 0; + /** + * Type de l'erreur quand on n'arrive pas à ouvrir le socket d'écoute de la connexion simulateur. + */ + public final static int NO_LISTEN_SIMULATOR = 1; + /** + * Type d'erreur + */ protected int type; + /** + * Le port à l'origine de l'exception. + */ protected int port; *************** *** 32,39 **** switch (type) { case NO_LISTEN_CLIENTS: { ! return ("Impossible d'ouvrir un socket d'ecoute clients sur le port "+port); } case NO_LISTEN_SIMULATOR: { ! return ("Impossible d'ouvrir un socket d'ecoute simulateur sur le port "+port); } default: { --- 44,54 ---- switch (type) { case NO_LISTEN_CLIENTS: { ! return ("Impossible d'ouvrir un socket d'ecoute clients sur le port " + ! port); } case NO_LISTEN_SIMULATOR: { ! return ( ! "Impossible d'ouvrir un socket d'ecoute simulateur sur le port " + ! port); } default: { Index: ServerFrame.java =================================================================== RCS file: /cvsroot/madsserv/madsserv/src/server/ServerFrame.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ServerFrame.java 21 Mar 2003 04:08:24 -0000 1.5 --- ServerFrame.java 24 Mar 2003 02:54:25 -0000 1.6 *************** *** 12,18 **** /** ! * <code>ServerFrame</code> cree l'interface graphique de Madsserv Serveur. * <p> ! * L'interface graphique se sépare en un tableau d'onglets et une barre de boutons. */ public class ServerFrame --- 12,20 ---- /** ! * <code>ServerFrame</code> crée l'interface graphique de Madsserv Serveur. * <p> ! * L'interface graphique se sépare en un tableau d'onglets et une barre de boutons. ! * @see ServerInit ! * @author Julien Carbonell */ public class ServerFrame *************** *** 24,27 **** --- 26,32 ---- final static int TEXTFIELD_HEIGHT = 25; + /** + * Le {@link ServerInit} auquel est rattaché cette interface graphique. + */ protected ServerInit serverInit = null; *************** *** 79,85 **** jTabbedPane.addTab("Rapports", null, jPanelReport, "Affiche les connexions"); jTabbedPane.addTab("Formats", null, jPanelFormats, ! "Affiche les formats support� par le serveur"); jTabbedPane.addTab("Qualite", null, jPanelQuality, ! "Affiche l'association format/niveau de qualit�"); contentPane.add(jTabbedPane, BorderLayout.CENTER); --- 84,90 ---- jTabbedPane.addTab("Rapports", null, jPanelReport, "Affiche les connexions"); jTabbedPane.addTab("Formats", null, jPanelFormats, ! "Affiche les formats supportes par le serveur"); jTabbedPane.addTab("Qualite", null, jPanelQuality, ! "Affiche l'association format/niveau de qualite"); contentPane.add(jTabbedPane, BorderLayout.CENTER); *************** *** 174,179 **** /** ! * Definit les operations effectues par un clic sur le bouton Demarrer. ! * @param evt l'evenement qui lance cette methode. */ public void Button_Start_actionPerformed(ActionEvent evt) { --- 179,184 ---- /** ! * Définit les opérations effectuées par un clic sur le bouton Démarrer. ! * @param evt l'événement qui lance cette méthode. */ public void Button_Start_actionPerformed(ActionEvent evt) { *************** *** 183,187 **** int portBaseRTP = ServerInit.PORT_BASE_RTP; int nbClients = ServerInit.NB_CLIENTS; ! int bytesSent = ServerInit.BYTES_SENT; Integer integer1 = null; Integer integer2 = null; --- 188,192 ---- int portBaseRTP = ServerInit.PORT_BASE_RTP; int nbClients = ServerInit.NB_CLIENTS; ! int bytesSent = ServerInit.BITRATE; Integer integer1 = null; Integer integer2 = null; *************** *** 195,198 **** --- 200,204 ---- integer3 = Integer.valueOf(jTextFieldPortRTP.getText()); integer4 = Integer.valueOf(jTextFieldNbMax.getText()); + // Verification des valeurs renvoyees if (integer1 == null || integer2 == null || integer3 == null || integer4 == null) { displayError("Erreur de saisie", *************** *** 205,209 **** nbClients = integer4.intValue(); if (serverInit == null) { ! // Creation du thread d'ecoute clients serverInit = new ServerInit(port, portSim, portBaseRTP, nbClients, this); --- 211,215 ---- nbClients = integer4.intValue(); if (serverInit == null) { ! // Creation du ServerInit serverInit = new ServerInit(port, portSim, portBaseRTP, nbClients, this); *************** *** 213,217 **** } else { - System.err.println("ServerInit est deja cree"); serverInit.start(); } --- 219,222 ---- *************** *** 223,226 **** --- 228,232 ---- } catch (ErrNoListen e) { + // Impossible de creer les sockets d'ecoute serverInit = null; displayError("Port occupe", *************** *** 232,237 **** /** ! * Definit les operations effectues par un clic sur le bouton Arreter. ! * @param evt l'evenement qui lance cette methode. */ public void Button_Stop_actionPerformed(ActionEvent evt) { --- 238,243 ---- /** ! * Définit les opérations effectuées par un clic sur le bouton Arrêter. ! * @param evt l'événement qui lance cette méthode. */ public void Button_Stop_actionPerformed(ActionEvent evt) { *************** *** 244,249 **** /** ! * Definit les operations effectues par un clic sur le bouton Quitter. ! * @param evt l'evenement qui lance cette methode. */ public void Button_Quit_actionPerformed(ActionEvent evt) { --- 250,255 ---- /** ! * Définit les opérations effectuées par un clic sur le bouton Quitter. ! * @param evt l'événement qui lance cette méthode. */ public void Button_Quit_actionPerformed(ActionEvent evt) { *************** *** 255,260 **** /** ! * Permet de quitter le client quand on clique pour fermer la fenetre ! * @param e l'evenement qui indique que l'on a clique sur le bouton pour fermer la fenetre */ protected void processWindowEvent(WindowEvent e) { --- 261,266 ---- /** ! * Permet de quitter le client quand on clique pour fermer la fenêtre ! * @param e l'événement qui indique que l'on a cliqué sur le bouton pour fermer la fenêtre. */ protected void processWindowEvent(WindowEvent e) { *************** *** 264,284 **** } } - - public static void main(String[] args) { - ServerFrame serverFrame = new ServerFrame(); - serverFrame.pack(); - // Centre la fenetre - Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); - Dimension frameSize = serverFrame.getSize(); - if (frameSize.height > screenSize.height) { - frameSize.height = screenSize.height; - } - if (frameSize.width > screenSize.width) { - frameSize.width = screenSize.width; - } - serverFrame.setLocation( (screenSize.width - frameSize.width) / 2, - (screenSize.height - frameSize.height) / 2); - serverFrame.show(); - } } --- 270,273 ---- *************** *** 326,330 **** /** ! * TableClients est une table permettant le suivi des connexions. */ class TableClients --- 315,319 ---- /** ! * TableClients est une table (JTable) permettant le suivi des connexions. */ class TableClients *************** *** 369,373 **** * @return l'index de la ligne du tableau */ ! protected int getRowForClient(int _clientID) { for (int i = 0; i < myModel.getRowCount(); i++) { if (_clientID == ( (Integer) myModel.getValueAt(i, COL_ID)).intValue()) { --- 358,362 ---- * @return l'index de la ligne du tableau */ ! protected synchronized int getRowForClient(int _clientID) { for (int i = 0; i < myModel.getRowCount(); i++) { if (_clientID == ( (Integer) myModel.getValueAt(i, COL_ID)).intValue()) { *************** *** 405,409 **** * @param _status le statut de la connexion. */ ! public void newClientRecord(int _clientID, int _portRTP, String _IP, String _status) { Object[] newRow = { --- 394,398 ---- * @param _status le statut de la connexion. */ ! public synchronized void newClientRecord(int _clientID, int _portRTP, String _IP, String _status) { Object[] newRow = { *************** *** 424,428 **** * @param _qualityLevel le niveau de qualite pour le client. */ ! public void updateClientRecord(int _clientID, String _IP, int _portRTP, String _status, String _media, float _bytesSent, --- 413,417 ---- * @param _qualityLevel le niveau de qualite pour le client. */ ! public synchronized void updateClientRecord(int _clientID, String _IP, int _portRTP, String _status, String _media, float _bytesSent, *************** *** 454,458 **** * @param _clientID l'ID du client a supprimer. */ ! public void removeClientRecord(int _clientID) { int row = getRowForClient(_clientID); if (row != -1) { --- 443,447 ---- * @param _clientID l'ID du client a supprimer. */ ! public synchronized void removeClientRecord(int _clientID) { int row = getRowForClient(_clientID); if (row != -1) { Index: ServerInit.java =================================================================== RCS file: /cvsroot/madsserv/madsserv/src/server/ServerInit.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** ServerInit.java 21 Mar 2003 04:08:24 -0000 1.10 --- ServerInit.java 24 Mar 2003 02:54:25 -0000 1.11 *************** *** 7,11 **** /** ! * <code>ServerInit</code> constitue la classe de demarrage du serveur Madsserv. * Elle gere les connexions multiples de clients ainsi que l'instanciation des * modules necessaires au traitement des requetes de diffusion media. --- 7,11 ---- /** ! * <code>ServerInit</code> constitue la classe de principale du serveur Madsserv. * Elle gere les connexions multiples de clients ainsi que l'instanciation des * modules necessaires au traitement des requetes de diffusion media. *************** *** 20,29 **** public class ServerInit { ! final static int PORT_LISTEN_CLIENTS = 5200; ! final static int PORT_LISTEN_SIMULATOR = 5100; ! final static int PORT_BASE_RTP = 40000; ! final static int NB_CLIENTS = 10; ! final static int BYTES_SENT = 0; ! final static int DEFAULT_QUALITY = 1; // tabClients enregistre l'ensemble des clients connectes --- 20,47 ---- public class ServerInit { ! /** ! * Port d'ecoute client par defaut ! */ ! public final static int PORT_LISTEN_CLIENTS = 5200; ! /** ! * Port d'ecoute simulateur par defaut ! */ ! public final static int PORT_LISTEN_SIMULATOR = 5100; ! /** ! * Port de base RTP ! */ ! public final static int PORT_BASE_RTP = 40000; ! /** ! * Nombre maximum de clients ! */ ! public final static int NB_CLIENTS = 10; ! /** ! * Debit initial d'une connexion ! */ ! public final static int BITRATE = 0; ! /** ! * Niveau de qualite par defaut ! */ ! public final static int DEFAULT_QUALITY = 1; // tabClients enregistre l'ensemble des clients connectes *************** *** 48,54 **** private DialogSimulator dialogSimulator = null; - // Reference sur le module de logs - LogCenter log; - // Parametres de connexion du serveur private int portListenClients; --- 66,69 ---- *************** *** 68,71 **** --- 83,91 ---- /** + * Reference sur le module de logs du serveur. + */ + public LogCenter log=null; + + /** * Constructeur de <code>ServerInit</code>. * @param _portListenClients le port d'ecoute des clients sur le serveur. *************** *** 105,108 **** --- 125,129 ---- try { + // Ouverture du socket d'ecoute clients log.open(); sockListenClients = new ServerSocket(portListenClients); *************** *** 118,121 **** --- 139,143 ---- try { + // Ouverture du socket d'ecoute simulateur sockListenSimulator = new ServerSocket(portListenSimulator); threadListenSimulator = new ThreadListenSimulator(this, *************** *** 137,140 **** --- 159,163 ---- public synchronized void stop() { + // Deconnexion des clients for (int i = 0; i < nbMaxClients; i++) { if (tabClients[i] != null) { *************** *** 143,153 **** } } threadListenSimulator.close(); threadListenSimulator = null; threadListenClients.close(); threadListenClients = null; - endConnexionSimulator("Arret du serveur"); sockListenClients = null; sockListenSimulator = null; log.close(); System.gc(); --- 166,179 ---- } } + // Deconnexion simulateur threadListenSimulator.close(); threadListenSimulator = null; + endConnexionSimulator("Arret du serveur"); + // Arret du thread d'ecoute clients threadListenClients.close(); threadListenClients = null; sockListenClients = null; sockListenSimulator = null; + // Fermeture des logs, log.close(); System.gc(); *************** *** 167,175 **** while (i < nbMaxClients) { if (tabClients[i] == null) { tabClients[i] = new ClientRecord(i, portBaseRTP + 4 * i, _sockClient.getInetAddress(). getHostAddress().toString()); - //tabClients[i].setPortRTP(); tabStreaming[i] = new Streaming(i, this); tabTransition[i] = new Transition(i, this); --- 193,201 ---- while (i < nbMaxClients) { + // Recherche d'un emplacement libre pour le nouveau client if (tabClients[i] == null) { tabClients[i] = new ClientRecord(i, portBaseRTP + 4 * i, _sockClient.getInetAddress(). getHostAddress().toString()); tabStreaming[i] = new Streaming(i, this); tabTransition[i] = new Transition(i, this); *************** *** 177,180 **** --- 203,207 ---- tabTransition[i].setGestionAdapta(gestionAdapta); if (dialogSimulator != null) { + // Mise a jour du simulateur String[] messageToSend = new String[2]; messageToSend[0] = String.valueOf(i); *************** *** 184,189 **** --- 211,218 ---- } addLog(i + ";" + "Connexion du client;"); + // Creation d'un nouveau module de dialogue pour le client tabDialogs[i] = new DialogClient(i, _sockClient, this); tabDialogs[i].start(); + // Envoi du message de connexion au client welcome = new String[1]; welcome[0] = String.valueOf(portBaseRTP + 4 * i); *************** *** 193,197 **** i++; } ! // Trop de clients il faut deconnecter le client if (i == nbMaxClients) { addLog("Trop de clients connectes -> deconnexion"); --- 222,226 ---- i++; } ! // Trop de clients il faut deconnecter le client essayant de se connecter if (i == nbMaxClients) { addLog("Trop de clients connectes -> deconnexion"); *************** *** 202,224 **** /** - * Cree un nouveau <code>DialogClient</code> pour gerer la communication avec - * un client. - * @param _clientID l'ID du client. - * @param _socketClient le {@link Socket} dedie a la communication avec le client. - * @return le <code>DialogClient</code> cree. - */ - /* public DialogClient createDialogClient(int _clientID, - Socket _sockClient) { - if (_clientID == -1) { - return tempDialog; - } - else { - synchronized (tabDialogs) { - tabDialogs[_clientID] = new DialogClient(_clientID, _sockClient, this); - return tabDialogs[_clientID]; - } - }*/ - - /** * Deconnecte un client en effacant tous les objets relatifs au traitement de sa connexion. * @param _clientID l'ID du client a deconnecter. --- 231,234 ---- *************** *** 228,238 **** if (tabClients[_clientID] != null) { ! if (_clientID == -1) { warning[0] = "Trop de clients connectes au serveur."; } ! else { warning[0] = "Deconnexion du client " + String.valueOf(_clientID); ! ! } try { sendMessage(_clientID, DialogClient.END_CONNEXION_FROM_SERVER, --- 238,247 ---- if (tabClients[_clientID] != null) { ! /* if (_clientID == -1) { warning[0] = "Trop de clients connectes au serveur."; } ! else {*/ warning[0] = "Deconnexion du client " + String.valueOf(_clientID); ! // } try { sendMessage(_clientID, DialogClient.END_CONNEXION_FROM_SERVER, *************** *** 287,291 **** /** ! * Cree un nouveau <code>Reencode</code> pour gerer l'encodage pour un client. * @param _clientID l'ID du client. * @param _URL l'adresse media demande. --- 296,300 ---- /** ! * Cree un nouveau <code>Reencode</code> pour gerer l'encodage pour un client. * @param _clientID l'ID du client. * @param _URL l'adresse media demande. *************** *** 310,313 **** --- 319,323 ---- synchronized (simulatorConnected) { if (simulatorConnected.booleanValue()) { + // Si un simulateur est deja connecte DialogSimulator dialogSimulatorTemp = new DialogSimulator( _socketSimulator, this); *************** *** 316,319 **** --- 326,330 ---- } else { + // Creation d'une connexion avec le simulateur simulatorConnected = new Boolean(true); dialogSimulator = new DialogSimulator(_socketSimulator, this); *************** *** 354,357 **** --- 365,369 ---- dialogSimulator.sendMessage(DialogSimulator.DECONNEXION_FROM_SERVER, messageToSend); + // Intervalle de temps pour laisser le temps au simulateur de recevoir le message try { Thread.sleep(100); *************** *** 382,385 **** --- 394,398 ---- synchronized (tabDialogs[_clientID]) { tabDialogs[_clientID].sendMessage(_type, _message); + // Log du message if (_message != null) { for (int i = 0; i < _message.length; i++) { *************** *** 392,395 **** --- 405,412 ---- } + /** + * Inscrit une ligne de log dans le fichier de logs. + * @param logDesc la description du log. + */ public void addLog(String logDesc) { log.writeLog("ServerInit;" + logDesc); *************** *** 475,479 **** /** ! * Modifie le niveau de qualite courant d'un client ce qui entraine le lancement * d'un processus de reencodage et de transition. * @param _clientID l'ID du client. --- 492,496 ---- /** ! * Modifie le niveau de qualite courant d'un client ce qui entraine le lancement * d'un processus de reencodage et de transition. * @param _clientID l'ID du client. *************** *** 484,489 **** --- 501,508 ---- Streaming streamingTemp = tabStreaming[_clientID]; + // Modification du champ de qualite au niveau de l'enregistrement du client tabClients[_clientID].setQualityLevel(_qualityLevel); + // Initialisation du Streaming si necessaire if (!streamingTemp.isInitialized()) { streamingTemp.setClientIP(getIP(_clientID)); *************** *** 499,505 **** } catch (Exception e) { e.printStackTrace(); String[] error = new String[1]; - //System.err.println("JB m'a envoye :" + e.getMessage()); if ( (error[0] = e.getMessage()) != null) { serverFrame.tableClients.setMedia(_clientID, "Erreur adresse media"); --- 518,524 ---- } catch (Exception e) { + // Une erreur lors du reencodage -> deconnexion du client e.printStackTrace(); String[] error = new String[1]; if ( (error[0] = e.getMessage()) != null) { serverFrame.tableClients.setMedia(_clientID, "Erreur adresse media"); *************** *** 510,513 **** --- 529,535 ---- } + /** + * Enregistrement d'un client + */ class ClientRecord { Index: ThreadListenClients.java =================================================================== RCS file: /cvsroot/madsserv/madsserv/src/server/ThreadListenClients.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** ThreadListenClients.java 21 Mar 2003 04:08:24 -0000 1.8 --- ThreadListenClients.java 24 Mar 2003 02:54:25 -0000 1.9 *************** *** 53,57 **** /** ! * Redefinit la methode <code>run</code> de la classe parent <code>Thread</code>. */ public void run() { --- 53,57 ---- /** ! * Redefinit la methode <code>run</code> de la classe parent <code>Thread</code>. */ public void run() { *************** *** 65,77 **** port); while (true) { sockClient = sockListen.accept(); ! /* clientIDTemp = */serverInit.createClient(sockClient); ! /*dialogClient = serverInit.createDialogClient(clientIDTemp, sockClient); ! dialogClient.start(); ! if (clientIDTemp != -1) { ! portRTP = serverInit.getPortRTP(clientIDTemp); ! welcome[0] = String.valueOf(portRTP); ! dialogClient.sendMessage(1, welcome); ! }*/ } } --- 65,71 ---- port); while (true) { + // Attente sur le socket d'ecoute sockClient = sockListen.accept(); ! serverInit.createClient(sockClient); } } *************** *** 81,89 **** finally { try { if (sockListen != null) { sockListen.close(); sockListen = null; } ! System.out.println("Listen-Clients" + Thread.currentThread() + " : Stopped !!! "); } --- 75,84 ---- finally { try { + // Ferme le socket avant de se terminer if (sockListen != null) { sockListen.close(); sockListen = null; } ! System.out.println("Listen-Clients " + Thread.currentThread() + " : Stopped !!! "); } Index: ThreadListenSimulator.java =================================================================== RCS file: /cvsroot/madsserv/madsserv/src/server/ThreadListenSimulator.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ThreadListenSimulator.java 19 Mar 2003 02:14:00 -0000 1.2 --- ThreadListenSimulator.java 24 Mar 2003 02:54:25 -0000 1.3 *************** *** 56,64 **** public void run() { Socket sockSimulator = null; - //DialogSimulator dialogSimulator = null; try { System.out.println("Serveur(" + Thread.currentThread() + ") attend sur " + port); ! while (true) { sockSimulator = sockListen.accept(); serverInit.createDialogSimulator(sockSimulator); --- 56,63 ---- public void run() { Socket sockSimulator = null; try { System.out.println("Serveur(" + Thread.currentThread() + ") attend sur " + port); ! while (true) { sockSimulator = sockListen.accept(); serverInit.createDialogSimulator(sockSimulator); Index: ThreadRead.java =================================================================== RCS file: /cvsroot/madsserv/madsserv/src/server/ThreadRead.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ThreadRead.java 21 Mar 2003 04:08:24 -0000 1.5 --- ThreadRead.java 24 Mar 2003 02:54:25 -0000 1.6 *************** *** 18,32 **** boolean end = false; ! // objet parent qui gere les entrees-sorties sur le socket protected DialogSocket parent; ! // BufferedReader sur lequel sont lus les messages protected BufferedReader binput; - protected String temp = ""; - protected String message = ""; - protected boolean waitingMessage = true; - protected int messageType = -1; - /** * Constructeur de <code>ThreadRead</code>. --- 18,31 ---- boolean end = false; ! /** ! * Objet qui gere les entrees-sorties sur le socket. ! */ protected DialogSocket parent; ! /** ! * <code>BufferedReader</code> sur lequel sont lus les messages. ! */ protected BufferedReader binput; /** * Constructeur de <code>ThreadRead</code>. *************** *** 46,58 **** */ public void run() { try { while ( (temp = binput.readLine()) != null) { if (temp != null) { if (waitingMessage && (temp.charAt(0) == '#')) { ! // un nouveau message commence waitingMessage = false; } else { if (!waitingMessage && (temp.charAt(0) == '#')) { waitingMessage = true; messageType = Integer.parseInt(message.substring(0, --- 45,64 ---- */ public void run() { + String temp = ""; + String message = ""; + boolean waitingMessage = true; + int messageType = -1; + + // # est le caractere de debut et de fin d'un message try { while ( (temp = binput.readLine()) != null) { if (temp != null) { if (waitingMessage && (temp.charAt(0) == '#')) { ! // Un nouveau message commence waitingMessage = false; } else { if (!waitingMessage && (temp.charAt(0) == '#')) { + // On etait en train de lire un message et on a recu le caractere de fin waitingMessage = true; messageType = Integer.parseInt(message.substring(0, *************** *** 65,73 **** } else { message = message.concat(temp + "\n"); } } } - } } --- 71,79 ---- } else { + // On lit un message message = message.concat(temp + "\n"); } } } } } *************** *** 78,84 **** try { if (!parent.socketIsClosed()) { - System.err.println("je fais un reset remote"); parent.resetByRemote(); - } System.out.println(getName() + Thread.currentThread() + --- 84,88 ---- *************** *** 89,95 **** } } - } protected String[] parseMessage(String _message) { return _message.split("\n"); --- 93,104 ---- } } } + /** + * Parse le message recu pour le decouper en un tableau de chaines de caracteres + * contenant les champs du message. + * @param _message la chaine de caracteres recue sur le socket. + * @return le tableau des champs du message recu. + */ protected String[] parseMessage(String _message) { return _message.split("\n"); Index: ThreadWrite.java =================================================================== RCS file: /cvsroot/madsserv/madsserv/src/server/ThreadWrite.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ThreadWrite.java 18 Mar 2003 03:20:27 -0000 1.3 --- ThreadWrite.java 24 Mar 2003 02:54:25 -0000 1.4 *************** *** 16,27 **** extends Thread { ! // objet parent qui gere les entrees-sorties sur le socket protected DialogSocket parent; ! // objet sur lequel sont dirigees les ecritures protected PrintWriter output; protected String messageToSend = ""; /** * Constructeur de <code>ThreadWrite</code>. --- 16,35 ---- extends Thread { ! /** ! * Objet qui gere les entrees-sorties sur le socket. ! */ protected DialogSocket parent; ! /** ! * <code>PrintWriter</code> sur lequel est ecrit le message a envoyer. ! */ protected PrintWriter output; + /** + * Le message a envoyer. + */ protected String messageToSend = ""; + /** * Constructeur de <code>ThreadWrite</code>. *************** *** 43,46 **** --- 51,55 ---- */ public synchronized void setMessageToSend(int _type, String[] _message) { + messageToSend=""; messageToSend = _type + "\n"; --- TestServer.java DELETED --- |
|
From: <car...@us...> - 2003-03-24 02:54:30
|
Update of /cvsroot/madsserv/madsserv/src/server/transition In directory sc8-pr-cvs1:/tmp/cvs-serv21811/server/transition Modified Files: Transition.java Log Message: Version stable et fonctionnelle Index: Transition.java =================================================================== RCS file: /cvsroot/madsserv/madsserv/src/server/transition/Transition.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** Transition.java 19 Mar 2003 01:47:11 -0000 1.8 --- Transition.java 24 Mar 2003 02:54:25 -0000 1.9 *************** *** 2,5 **** --- 2,6 ---- import java.io.*; import java.lang.Object.*; + import java.lang.String.*; import javax.media.Time.*; import javax.media.*; *************** *** 31,34 **** --- 32,36 ---- protected GestionAdapta gestionAdaptaRef; protected Streaming streamingRef; + private String temp; /** *************** *** 58,65 **** double _mediaLength) { ! double newAuxVMediaTime = oldMediaTime + 2; ! double newAuxAMediaTime = oldMediaTime + 2; ! ! System.out.println("FUCK :" + _reencodingVideoFor.getEncoding()); // on regarde ici le format de reencodage et on decide alors du temps de transition --- 60,65 ---- double _mediaLength) { ! double newAuxVMediaTime = oldMediaTime + 1.5; ! double newAuxAMediaTime = oldMediaTime + 1.5; // on regarde ici le format de reencodage et on decide alors du temps de transition *************** *** 67,144 **** if (_reencodingVideoFor.getEncoding().compareTo("celB/rtp") == 0) { ! newAuxVMediaTime = oldMediaTime + 1; } if (_reencodingVideoFor.getEncoding().compareTo("celB/rtp") == 0) { ! newAuxVMediaTime = oldMediaTime + 1; } ! if ((_reencodingVideoFor.getEncoding()).compareTo("JPEG/RTP") == 0) { ! newAuxVMediaTime = oldMediaTime + 2; } if (_reencodingVideoFor.getEncoding().compareTo("nv/rtp") == 0) { ! newAuxVMediaTime = oldMediaTime + 1; } if (_reencodingVideoFor.getEncoding().compareTo("H261/RTP") == 0) { ! newAuxVMediaTime = oldMediaTime + 1; } if (_reencodingVideoFor.getEncoding().compareTo("MPV/RTP") == 0) { ! newAuxVMediaTime = oldMediaTime + 1; } if (_reencodingVideoFor.getEncoding().compareTo("MP2T/RTP") == 0) { ! newAuxVMediaTime = oldMediaTime + 1; } ! if ((_reencodingVideoFor.getEncoding()).compareTo("h263/RTP") == 0) { ! newAuxVMediaTime = oldMediaTime + 3; } } ! if (_reencodingAudioFor.getEncoding().compareTo("PCMU/RTP") == 0){ ! newAuxAMediaTime = oldMediaTime + 1; } if (_reencodingAudioFor.getEncoding().compareTo("1016/RTP") == 0) { ! newAuxAMediaTime = oldMediaTime + 1; } if (_reencodingAudioFor.getEncoding().compareTo("G726-32/RTP") == 0) { ! newAuxAMediaTime = oldMediaTime + 1; } ! if (_reencodingAudioFor.getEncoding().compareTo("G723/RTP") == 0){ ! newAuxAMediaTime = oldMediaTime + 1; } ! if (_reencodingAudioFor.getEncoding().compareTo("DVI4/RTP") == 0){ ! newAuxAMediaTime = oldMediaTime + 1; } ! if (_reencodingAudioFor.getEncoding().compareTo("LPG/RTP") == 0){ ! newAuxAMediaTime = oldMediaTime + 1; } ! if (_reencodingAudioFor.getEncoding().compareTo("PCMA/RTP") == 0){ ! newAuxAMediaTime = oldMediaTime + 1; } ! if (_reencodingAudioFor.getEncoding().compareTo("G722/RTP") == 0){ ! newAuxAMediaTime = oldMediaTime + 1; } ! if (_reencodingAudioFor.getEncoding().compareTo("L16/RTP") == 0){ ! newAuxAMediaTime = oldMediaTime + 1; } if (_reencodingAudioFor.getEncoding().compareTo("QCELP/RTP") == 0) { ! newAuxAMediaTime = oldMediaTime + 1; } ! if (_reencodingAudioFor.getEncoding().compareTo("CN/RTP") == 0){ ! newAuxAMediaTime = oldMediaTime + 1; } ! if (_reencodingAudioFor.getEncoding().compareTo("MPA/RTP") == 0){ ! newAuxAMediaTime = oldMediaTime + 1; } ! if (_reencodingAudioFor.getEncoding().compareTo("G728/RTP") == 0){ ! newAuxAMediaTime = oldMediaTime + 1; } ! if (_reencodingAudioFor.getEncoding().compareTo("G729/RTP") == 0){ ! newAuxAMediaTime = oldMediaTime + 1; } ! if ((_reencodingAudioFor.getEncoding()).compareTo("mpegaudio/rtp") == 0) { newAuxAMediaTime = oldMediaTime + 1.5; } ! if ((_reencodingAudioFor.getEncoding()).compareTo("dvi/rtp") == 0) { newAuxAMediaTime = oldMediaTime + 1.5; } ! if ((_reencodingAudioFor.getEncoding()).compareTo("gsm/rtp") == 0) { newAuxAMediaTime = oldMediaTime + 1.5; } --- 67,144 ---- if (_reencodingVideoFor.getEncoding().compareTo("celB/rtp") == 0) { ! newAuxVMediaTime = oldMediaTime + 1.5; } if (_reencodingVideoFor.getEncoding().compareTo("celB/rtp") == 0) { ! newAuxVMediaTime = oldMediaTime + 1.5; } ! if ( (_reencodingVideoFor.getEncoding()).compareTo("JPEG/RTP") == 0) { ! newAuxVMediaTime = oldMediaTime + 1.5; } if (_reencodingVideoFor.getEncoding().compareTo("nv/rtp") == 0) { ! newAuxVMediaTime = oldMediaTime + 1.5; } if (_reencodingVideoFor.getEncoding().compareTo("H261/RTP") == 0) { ! newAuxVMediaTime = oldMediaTime + 1.5; } if (_reencodingVideoFor.getEncoding().compareTo("MPV/RTP") == 0) { ! newAuxVMediaTime = oldMediaTime + 1.5; } if (_reencodingVideoFor.getEncoding().compareTo("MP2T/RTP") == 0) { ! newAuxVMediaTime = oldMediaTime + 1.5; } ! if ( (_reencodingVideoFor.getEncoding()).compareTo("h263/rtp") == 0) { ! newAuxVMediaTime = oldMediaTime + 3.5; } } ! if (_reencodingAudioFor.getEncoding().compareTo("PCMU/RTP") == 0) { ! newAuxAMediaTime = oldMediaTime + 1.5; } if (_reencodingAudioFor.getEncoding().compareTo("1016/RTP") == 0) { ! newAuxAMediaTime = oldMediaTime + 1.5; } if (_reencodingAudioFor.getEncoding().compareTo("G726-32/RTP") == 0) { ! newAuxAMediaTime = oldMediaTime + 1.5; } ! if (_reencodingAudioFor.getEncoding().compareTo("G723/RTP") == 0) { ! newAuxAMediaTime = oldMediaTime + 1.5; } ! if (_reencodingAudioFor.getEncoding().compareTo("DVI4/RTP") == 0) { ! newAuxAMediaTime = oldMediaTime + 1.5; } ! if (_reencodingAudioFor.getEncoding().compareTo("LPG/RTP") == 0) { ! newAuxAMediaTime = oldMediaTime + 1.5; } ! if (_reencodingAudioFor.getEncoding().compareTo("PCMA/RTP") == 0) { ! newAuxAMediaTime = oldMediaTime + 1.5; } ! if (_reencodingAudioFor.getEncoding().compareTo("G722/RTP") == 0) { ! newAuxAMediaTime = oldMediaTime + 1.5; } ! if (_reencodingAudioFor.getEncoding().compareTo("L16/RTP") == 0) { ! newAuxAMediaTime = oldMediaTime + 1.5; } if (_reencodingAudioFor.getEncoding().compareTo("QCELP/RTP") == 0) { ! newAuxAMediaTime = oldMediaTime + 1.5; } ! if (_reencodingAudioFor.getEncoding().compareTo("CN/RTP") == 0) { ! newAuxAMediaTime = oldMediaTime + 1.5; } ! if (_reencodingAudioFor.getEncoding().compareTo("MPA/RTP") == 0) { ! newAuxAMediaTime = oldMediaTime + 1.5; } ! if (_reencodingAudioFor.getEncoding().compareTo("G728/RTP") == 0) { ! newAuxAMediaTime = oldMediaTime + 1.5; } ! if (_reencodingAudioFor.getEncoding().compareTo("G729/RTP") == 0) { ! newAuxAMediaTime = oldMediaTime + 1.5; } ! if ( (_reencodingAudioFor.getEncoding()).compareTo("mpegaudio/rtp") == 0) { newAuxAMediaTime = oldMediaTime + 1.5; } ! if ( (_reencodingAudioFor.getEncoding()).compareTo("dvi/rtp") == 0) { newAuxAMediaTime = oldMediaTime + 1.5; } ! if ( (_reencodingAudioFor.getEncoding()).compareTo("gsm/rtp") == 0) { newAuxAMediaTime = oldMediaTime + 1.5; } *************** *** 160,164 **** */ ! public void setQualityLevel(int _qualityLevel, boolean _newFile) { --- 160,165 ---- */ ! public void setQualityLevel(int _qualityLevel, boolean _newFile) throws ! Exception { *************** *** 166,202 **** double mediaLength = 0; double auxTime = 0; Time startTime; Time auxMediaTime; VideoFormat reencodingVideoFor = null; AudioFormat reencodingAudioFor = null; //variables qui stockes le format original Video et Audio ! Format[][] lesFormats; ! /*Format[][] origVideoFor; ! Format[][] origAudioFor;*/ ! System.out.println("avant quality_level"); qualityLevel = _qualityLevel; //On obtient ici les formats Video et Audio Supportes. ! lesFormats = reencodeRef.getSupportedFormats(); ! System.out.println("On a recu les formats supportes"); ! //On obtient ici les formats Video et Audio de reencodage. if (reencodeRef.multiMedia) { ! System.out.println("debut settage des formats"); ! reencodingVideoFor = (VideoFormat) lesFormats[0][random.nextInt( ! lesFormats[0].length)]; /*gestionAdaptaRef.getVideoStreamingFormat( ! lesFormats, qualityLevel);*/ ! System.out.println("settage format video termine"); ! reencodingAudioFor = (AudioFormat) lesFormats[1][random.nextInt( ! lesFormats[1].length)]; ! /*gestionAdaptaRef.getAudioStreamingFormat(lesFormats, qualityLevel);*/ ! System.out.println("settage des formats termine"); } else { ! reencodingAudioFor = (AudioFormat) lesFormats[0][random.nextInt( ! lesFormats[0].length)]; ! /*gestionAdaptaRef.getAudioStreamingFormat(lesFormats, qualityLevel);*/ ! System.out.println("!multi settage du format audio"); } --- 167,198 ---- double mediaLength = 0; double auxTime = 0; + float jpegQuality=0; Time startTime; Time auxMediaTime; + Format[] reencodingFormats=null; VideoFormat reencodingVideoFor = null; AudioFormat reencodingAudioFor = null; //variables qui stockes le format original Video et Audio ! Format[][] supportedFormats; qualityLevel = _qualityLevel; + addLog("nouvelle qualite " + String.valueOf(qualityLevel)); //On obtient ici les formats Video et Audio Supportes. ! try { ! supportedFormats = reencodeRef.getSupportedFormats(); ! reencodingFormats= gestionAdaptaRef.getStreamingFormat(supportedFormats,qualityLevel); ! } ! catch (Exception e) { ! throw e; ! } //On obtient ici les formats Video et Audio de reencodage. if (reencodeRef.multiMedia) { ! reencodingVideoFor = (VideoFormat) reencodingFormats[1]; ! jpegQuality = gestionAdaptaRef.getJPEGQuality(qualityLevel); ! reencodingAudioFor = (AudioFormat) reencodingFormats[0]; } else { ! reencodingAudioFor = (AudioFormat) reencodingFormats[0]; } *************** *** 217,235 **** } //on Transmet ici les formats Audio et Video de reencodage - System.err.println("Transition : j'ai mis a jour les nouveaux formats"); if (reencodeRef.multiMedia) { reencodeRef.setReencodingVideoFormat(reencodingVideoFor); } reencodeRef.setReencodingAudioFormat(reencodingAudioFor); ! System.err.println("Transition : j'ai mis a jour les nouveaux formats"); ! //On Transmet ici l'endroit dans le media a partir de laquelle il faut reencoder le fichier. reencodeRef.setReencodingTime(startTime); - System.err.println("Transition : startime - " + startTime.getSeconds()); - reencodeRef.start(); - System.err.println("Transition : j'ai lance le reencodage"); - } --- 213,233 ---- } //on Transmet ici les formats Audio et Video de reencodage if (reencodeRef.multiMedia) { reencodeRef.setReencodingVideoFormat(reencodingVideoFor); + temp.valueOf(totalTime); + if (serverInit.log.LOG_ENABLED) { + addLog( (reencodingVideoFor.getEncoding() + ";") + temp); + } } reencodeRef.setReencodingAudioFormat(reencodingAudioFor); ! reencodeRef.setJPEGQuality(jpegQuality); ! temp.valueOf(totalTime); ! if (serverInit.log.LOG_ENABLED) { ! addLog( (reencodingAudioFor.getEncoding() + ";") + temp); ! } //On Transmet ici l'endroit dans le media a partir de laquelle il faut reencoder le fichier. reencodeRef.setReencodingTime(startTime); reencodeRef.start(); } *************** *** 241,245 **** currentMediaTime = _currentMediaTime; mediaTimeReceived = true; - } --- 239,242 ---- *************** *** 247,250 **** --- 244,248 ---- * setStreaming cree une referrence sur un objet Streaming * @param streamingRef un objet de type Streaming + * {@link Streaming} */ public void setStreaming(Streaming streamingRef) { *************** *** 255,258 **** --- 253,257 ---- * setStreaming cree une referrence sur un objet gestionAdapta * @param gestionAdptaRef un objet de type gestionAdapta + * {@link setStreaming} */ public void setGestionAdapta(GestionAdapta gestionAdaptaRef) { *************** *** 263,269 **** --- 262,278 ---- * setStreaming cree une referrence sur un objet Reencode * @param reencodeRef un objet de type Reencode + * {@link Reencode} */ public void setReencode(Reencode reencodeRef) { this.reencodeRef = reencodeRef; + } + + /** + * addLog envoie un message de log au module de log. + * @param message le message a ecrire dans le fichier log + */ + private void addLog(String message) { + String logToSend = new String( "Transition;" + this.numClient + ";" + message); + serverInit.log.writeLog(logToSend); } |
|
From: <car...@us...> - 2003-03-24 02:54:29
|
Update of /cvsroot/madsserv/madsserv/src/server/streaming
In directory sc8-pr-cvs1:/tmp/cvs-serv21811/server/streaming
Modified Files:
Streaming.java
Log Message:
Version stable et fonctionnelle
Index: Streaming.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/server/streaming/Streaming.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** Streaming.java 21 Mar 2003 04:08:25 -0000 1.5
--- Streaming.java 24 Mar 2003 02:54:25 -0000 1.6
***************
*** 58,62 ****
long then;
! // Constructeur avec arguments minimums
public Streaming(int _clientID, ServerInit _serverInit) {
serverInit = _serverInit;
--- 58,66 ----
long then;
! /**
! * Constructeur avec arguments minimums.
! * @param _clientID l'ID du client traite.
! * @param _serverInit l'objet qui fait appel à ce constructeur.
! */
public Streaming(int _clientID, ServerInit _serverInit) {
serverInit = _serverInit;
***************
*** 68,80 ****
}
! // Constructeur avec l'adresse IP et le port du client
! public Streaming(int _clientID, String _clientIPAddress, String _clientPort,
ServerInit _serverInit) {
this(_clientID, _serverInit);
clientIPAddress = _clientIPAddress;
! Integer integer = Integer.valueOf(_clientPort);
! if (integer != null) {
! clientPort = integer.intValue();
! }
}
--- 72,88 ----
}
! /**
! * Constructeur prenant l'adresse IP et le port du client.
! * @param _clientID l'ID du client traite.
! * @param _serverInit l'objet qui fait appel à ce constructeur.
! * @param _clientPort le port RTP pour ce client.
! * @param _clientIPAddress l'adresse IP du client.
! */
!
! public Streaming(int _clientID, String _clientIPAddress, int _clientPort,
ServerInit _serverInit) {
this(_clientID, _serverInit);
clientIPAddress = _clientIPAddress;
! clientPort = _clientPort;
}
***************
*** 116,121 ****
try {
rtpMgrs[i] = RTPManager.newInstance();
- // rtpMgrs[i].addSendStreamListener(this);
-
port = clientPort + 2 * i;
ipAddr = InetAddress.getByName(clientIPAddress);
--- 124,127 ----
***************
*** 128,137 ****
1,
false);
! sourceDescList[1] = new SourceDescription(SourceDescription
.SOURCE_DESC_CNAME,
cname,
1,
false);
! sourceDescList[2] = new SourceDescription(SourceDescription.
SOURCE_DESC_TOOL,
"JMF",
--- 134,143 ----
1,
false);
! sourceDescList[1] = new SourceDescription(SourceDescription
.SOURCE_DESC_CNAME,
cname,
1,
false);
! sourceDescList[2] = new SourceDescription(SourceDescription.
SOURCE_DESC_TOOL,
"JMF",
***************
*** 139,144 ****
false);*/
! rtpMgrs[i].initialize(localAddr/*, sourceDescList, 0.05, 0.25,
! null*/);
// Ajoute le client dans les cibles des flux
rtpMgrs[i].addTarget(destAddr);
--- 145,149 ----
false);*/
! rtpMgrs[i].initialize(localAddr);
// Ajoute le client dans les cibles des flux
rtpMgrs[i].addTarget(destAddr);
***************
*** 152,156 ****
/**
! * Modifie la <code>DataSource</code> a diffuser et demarre la diffusion de ce
* nouveau flux.
* @param _dataInput le nouveau flux a diffuser.
--- 157,161 ----
/**
! * Modifie la <code>DataSource</code> a diffuser et demarre la diffusion de ce
* nouveau flux.
* @param _dataInput le nouveau flux a diffuser.
***************
*** 158,162 ****
public synchronized void setNewStreams(DataSource _dataInput) {
SendStream sendStream;
-
PushBufferDataSource ds = null;
PushBufferStream ss[];
--- 163,166 ----
***************
*** 164,179 ****
addLog("Le streaming a recu les nouveaux streams;");
! //System.err.println("UPDATESTATS : setnewstreams il est a closer");
updateStats.close();
! alreadySent = 0;
! for (int i = 0; i < sendStreamVectors.length; i++) {
! for (int j = 0; j < sendStreamVectors[i].size(); j++) {
! alreadySent += ( (SendStream) sendStreamVectors[i].elementAt(j)).
! getSourceTransmissionStats().getBytesTransmitted();
! }
! }
then = System.currentTimeMillis();
- //System.err.println("STREAMING : alreadySent = " +alreadySent);
// Si un flux est en cours de diffusion on le supprime avant de demarrer le nouveau.
--- 168,183 ----
addLog("Le streaming a recu les nouveaux streams;");
! // Fermeture du thread calculant le debit moyen
updateStats.close();
! /* alreadySent = 0;
! for (int i = 0; i < sendStreamVectors.length; i++) {
! for (int j = 0; j < sendStreamVectors[i].size(); j++) {
! alreadySent += ( (SendStream) sendStreamVectors[i].elementAt(j)).
! getSourceTransmissionStats().getBytesTransmitted();
! }
! }*/
! // Enregistrment du moment de suppression des anciens flux (utilise par le thread de calcul du debit)
then = System.currentTimeMillis();
// Si un flux est en cours de diffusion on le supprime avant de demarrer le nouveau.
***************
*** 202,214 ****
}
ss = ds.getStreams();
-
addLog("Nombre de streams " + ss.length + ";");
try {
! Thread.sleep(1000);
}
catch (Exception e) {}
! // Envoie un message au client pour le prevenir de l'arrivee de nouveaux flux
String[] messageToSend = new String[2];
messageToSend[0] = "Pret a envoyer le media";
--- 206,217 ----
}
ss = ds.getStreams();
addLog("Nombre de streams " + ss.length + ";");
try {
! Thread.sleep(500);
}
catch (Exception e) {}
! // Envoi d'un message au client pour le prevenir de l'arrivee de nouveaux flux
String[] messageToSend = new String[2];
messageToSend[0] = "Pret a envoyer le media";
***************
*** 225,234 ****
for (int i = 0; i < ss.length; i++) {
try {
- System.err.println("Streaming : j'envoie le stream " + i);
sendStream = rtpMgrs[i].createSendStream(dataInput, i);
sendStream.setSourceDescription(sourceDescList);
sendStreamVectors[i].add(sendStream);
sendStream.start();
! System.err.println("Streaming : stream envoye " + i);
alreadyStarted = Boolean.valueOf(true);
serverInit.setStatus(clientID, "Diffusion");
--- 228,236 ----
for (int i = 0; i < ss.length; i++) {
try {
sendStream = rtpMgrs[i].createSendStream(dataInput, i);
sendStream.setSourceDescription(sourceDescList);
sendStreamVectors[i].add(sendStream);
sendStream.start();
! addLog("Stream envoye " + i);
alreadyStarted = Boolean.valueOf(true);
serverInit.setStatus(clientID, "Diffusion");
***************
*** 238,241 ****
--- 240,244 ----
}
}
+ // Creation et lancement d'un nouveau thread de calcul du debit
updateStats = new UpdateStats(then);
System.gc();
***************
*** 269,279 ****
/**
! * Provoque l'interruption de la diffusion en cours et la deconnexion du client.
*/
public void endOfMedia() {
int nbStreams, vectSize;
updateStats.close();
if (alreadyStarted.booleanValue()) {
for (int i = 0; i < nbManagers; i++) {
--- 272,284 ----
/**
! * Provoque l'interruption de la diffusion en cours et la deconnexion du client.
*/
public void endOfMedia() {
int nbStreams, vectSize;
+ // Fermeture du thread de calcul du debit moyen
updateStats.close();
+ // Suppression des flux en cours de diffusion
if (alreadyStarted.booleanValue()) {
for (int i = 0; i < nbManagers; i++) {
***************
*** 292,297 ****
alreadyStarted = Boolean.valueOf(false);
}
try {
! Thread.sleep(4000);
}
catch (Exception e) {
--- 297,304 ----
alreadyStarted = Boolean.valueOf(false);
}
+ // Attente de la fin de diffusion cote client (latence entre suppression
+ // cote serveur et fin de diffusion cote client)
try {
! Thread.sleep(6000);
}
catch (Exception e) {
***************
*** 299,302 ****
--- 306,310 ----
}
addLog("Fin de la diffusion, suppression des Streams;");
+ // Fermeture de la connexion client
serverInit.endConnexionClient(clientID);
}
***************
*** 326,329 ****
--- 334,340 ----
}
+ /**
+ * Thread de calcul du debit moyen (mise a jour periodique en cours de diffusion)
+ */
class UpdateStats
extends Thread {
***************
*** 332,336 ****
public UpdateStats(long _then) {
- //System.err.println("UPDATE : j'ai cree un update");
then = _then;
}
--- 343,346 ----
***************
*** 360,368 ****
else {
for (int j = 0; j < vectSizes[i]; j++) {
- /*System.err.println("UPDATE j'ajoute des bytes " +
- ( (SendStream) sendStreamVectors[i].
- elementAt(j)).
- getSourceTransmissionStats().
- getBytesTransmitted());*/
bytesSent += ( (SendStream) sendStreamVectors[i].elementAt(j)).
getSourceTransmissionStats().getBytesTransmitted();
--- 370,373 ----
***************
*** 371,379 ****
}
}
! //System.err.println("UPDATE diff: " + (System.currentTimeMillis() - then));
! //System.err.println("UPDATE bytessentbrut: " +
! // (bytesSent/* - alreadySent*/));
!
! tmp = (float) (bytesSent /* - alreadySent*/) /
( (float) (System.currentTimeMillis() - then + 1) / 1000);
bytesSent = (long) tmp;
--- 376,380 ----
}
}
! tmp = (float) bytesSent /
( (float) (System.currentTimeMillis() - then + 1) / 1000);
bytesSent = (long) tmp;
***************
*** 386,390 ****
}
}
- // System.err.println("UPDATE : fin du thread");
}
--- 387,390 ----
***************
*** 397,400 ****
}
}
-
}
--- 397,399 ----
|
|
From: <car...@us...> - 2003-03-24 02:54:29
|
Update of /cvsroot/madsserv/madsserv/src/simulator
In directory sc8-pr-cvs1:/tmp/cvs-serv21811/simulator
Modified Files:
Simulator.java ThreadScript.java
Log Message:
Version stable et fonctionnelle
Index: Simulator.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/simulator/Simulator.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** Simulator.java 23 Mar 2003 15:12:43 -0000 1.5
--- Simulator.java 24 Mar 2003 02:54:25 -0000 1.6
***************
*** 71,75 ****
//Socket
private Socket mySocket = null;
! public DialogServer dialogServer;
public LogCenter log;
private Script interpreteScript;
--- 71,75 ----
//Socket
private Socket mySocket = null;
! public DialogServerSimu dialogServerSimu;
public LogCenter log;
private Script interpreteScript;
***************
*** 213,217 ****
String messageToSend[] = new String[1];
messageToSend[0] = "fin de la connexion";
! dialogServer.sendMessage(DECONNEXION_FROM_SIMU, messageToSend);
log.close();
System.exit(0);
--- 213,217 ----
String messageToSend[] = new String[1];
messageToSend[0] = "fin de la connexion";
! dialogServerSimu.sendMessage(DECONNEXION_FROM_SIMU, messageToSend);
log.close();
System.exit(0);
***************
*** 257,262 ****
}
! dialogServer = new DialogServer(mySocket, this);
! dialogServer.start();
if (getScript().compareTo("") != 0)
{
--- 257,262 ----
}
! dialogServerSimu = new DialogServerSimu(mySocket, this);
! dialogServerSimu.start();
if (getScript().compareTo("") != 0)
{
***************
*** 273,277 ****
addLog( ("Changement de Qualite;" + messageToSend[0]).concat(";" +
messageToSend[1]));
! dialogServer.sendMessage(UPDATE_FROM_SIMU, messageToSend);
}
}
--- 273,277 ----
addLog( ("Changement de Qualite;" + messageToSend[0]).concat(";" +
messageToSend[1]));
! dialogServerSimu.sendMessage(UPDATE_FROM_SIMU, messageToSend);
}
}
***************
*** 351,355 ****
*/
public void endConnexion() {
! dialogServer.stop();
mySocket = null;
}
--- 351,355 ----
*/
public void endConnexion() {
! dialogServerSimu.stop();
mySocket = null;
}
Index: ThreadScript.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/simulator/ThreadScript.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** ThreadScript.java 23 Mar 2003 15:12:43 -0000 1.2
--- ThreadScript.java 24 Mar 2003 02:54:26 -0000 1.3
***************
*** 68,72 ****
Thread.sleep(bidule*1000); }
catch (InterruptedException e) { }
! sim.dialogServer.sendMessage(2,message);
System.out.println("j'envoie le niveau de qualite " + message[1] + " au client " + message[0]);
--- 68,72 ----
Thread.sleep(bidule*1000); }
catch (InterruptedException e) { }
! sim.dialogServerSimu.sendMessage(2,message);
System.out.println("j'envoie le niveau de qualite " + message[1] + " au client " + message[0]);
|
|
From: <car...@us...> - 2003-03-24 02:54:29
|
Update of /cvsroot/madsserv/madsserv/src/server/adaptability
In directory sc8-pr-cvs1:/tmp/cvs-serv21811/server/adaptability
Modified Files:
GestionAdapta.java
Log Message:
Version stable et fonctionnelle
Index: GestionAdapta.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/server/adaptability/GestionAdapta.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** GestionAdapta.java 20 Mar 2003 01:03:28 -0000 1.8
--- GestionAdapta.java 24 Mar 2003 02:54:25 -0000 1.9
***************
*** 29,32 ****
--- 29,36 ----
public class GestionAdapta {
+ // Fait correspondre un niveau de qualite a une charge maximale.
+ private int[] qualityToPayload = {
+ 17, 14, 5,0};
+
/**
* Cette méthode retourne le ou les formats de diffusion du fichier
***************
*** 37,86 ****
* @param supported l'ensemble des formats supporté par le serveur.
* @param nivQualite le niveau de qualité demandé.
! * @return un vecteur de <code>Format</code> contenant les formats de diffusion
* optimaux en fonction des formats supportés par le serveur et le
* niveau de qualité requis.
*/
! public Format[] getStreamingFormat(Format[][] supported, int nivQualite)
! throws Exception {
Format[] choisi = null;
int optimal = 0;
int[] optimaux = null;
! if(supported.length == 1) // Fichier audio uniquement.
! {
// On cree un tableau contenant les charges RTP pour chaque format
// audio supporte.
int[] payLoad = new int[supported[0].length];
// On remplit ce tableau.
! for(int i = 0; i < supported[0].length; i++)
payLoad[i] = getPayLoadFromTable(supported[0][i]);
!
// On recupere la coordonnee du format optimal.
! optimal = getBestQuality(payLoad,nivQualite);
! return supported[optimal];
}
! else if(supported.length == 2) // Fichier multimedia.
! {
! // On cree un tableau contenant les charges RTP pour chaque couple de
! // format avec les formats video en abscisse et les formats audio en
! // ordonnee.
! int[][] payLoad = new int[supported[0].length][supported[1].length];
! // On remplit le tableau payLoad[][] en parcourant supported[][].
! for(int i = 0; i < supported[0].length; i++)
! for(int j = 0; j < supported[1].length; j++)
! payLoad[i][j] = getPayLoadFromTable(supported[0][i]) +
! getPayLoadFromTable(supported[1][j]);
! // On recupere les coordonnees du couple de formats optimal.
! optimaux = getBestQuality(payLoad,nivQualite);
! choisi[0] = supported[0][optimaux[0]];
! choisi[1] = supported[1][optimaux[1]];
return choisi;
}
! else throw new Exception("Probleme de transmission des formats supportes");
}
/**
--- 41,118 ----
* @param supported l'ensemble des formats supporté par le serveur.
* @param nivQualite le niveau de qualité demandé.
! * @return un vecteur de <code>Format</code> contenant les formats de diffusion
* optimaux en fonction des formats supportés par le serveur et le
* niveau de qualité requis.
*/
! public Format[] getStreamingFormat(Format[][] supported, int nivQualite) throws
! Exception {
Format[] choisi = null;
int optimal = 0;
int[] optimaux = null;
! if (supported.length == 1) { // Fichier audio uniquement.
// On cree un tableau contenant les charges RTP pour chaque format
// audio supporte.
int[] payLoad = new int[supported[0].length];
+ choisi = new Format[1];
// On remplit ce tableau.
! for (int i = 0; i < supported[0].length; i++) {
payLoad[i] = getPayLoadFromTable(supported[0][i]);
! }
// On recupere la coordonnee du format optimal.
! optimal = getBestQuality(payLoad, nivQualite);
! choisi[0] = supported[0][optimal];
! return choisi;
}
! else if (supported.length == 2) { // Fichier multimedia.
! choisi = new Format[2];
! optimaux = new int[2];
! // On cree un tableau contenant les charges RTP pour chaque format
! // audio supporte.
! int[] payLoad = new int[supported[1].length];
! // On remplit ce tableau.
! for (int i = 0; i < supported[1].length; i++) {
! payLoad[i] = getPayLoadFromTable(supported[1][i]);
! }
! // On recupere la coordonnee du format optimal.
! optimaux[0] = getBestQuality(payLoad, nivQualite);
!
! for (int i = 0; i < supported[0].length; i++) {
! // Si le JPEG_RTP est supporte on choisit ce format qui est le seul a
! // une degradation de la video (cf getJPEGQuality)
! if (supported[0][i].getEncoding().compareTo(VideoFormat.JPEG)==0 ||
! supported[0][i].getEncoding().compareTo(VideoFormat.JPEG_RTP)==0) {
! optimaux[1] = i;
! }
! }
!
! choisi[0] = supported[1][optimaux[0]];
! choisi[1] = supported[0][optimaux[1]];
return choisi;
}
! else {
! throw new Exception("Probleme de transmission des formats supportes");
! }
}
+ // Associe a chaque niveau de qualite un niveau de qualite JPEG utilise par Reencode.
+ private float getJPEGQuality(int nivQualite) {
+ if (nivQualite == 1) {
+ return 0.5f;
+ }
+ if (nivQualite == 2) {
+ return 0.25f;
+ }
+ if (nivQualite == 3) {
+ return 0.01f;
+ }
+ if (nivQualite == 4) {
+ return 0.001f;
+ }
+ return 0.5f;
+ }
/**
***************
*** 96,101 ****
String nomEncodage = new String(supported.getEncoding());
int splRate = 0;
! if(supported instanceof AudioFormat) {
! splRate = (int)((AudioFormat)supported).getSampleRate();
}
--- 128,133 ----
String nomEncodage = new String(supported.getEncoding());
int splRate = 0;
! if (supported instanceof AudioFormat) {
! splRate = (int) ( (AudioFormat) supported).getSampleRate();
}
***************
*** 115,119 ****
(nomEncodage.compareTo(AudioFormat.DVI_RTP)) == 0) {
switch (splRate) {
- // case 8000: return 5;
case 16000:
return 6;
--- 147,150 ----
***************
*** 163,169 ****
/**
! * Cette focntion retourne la coordonnée du format audio optimal de
! * réencodage. On ne tient pas encore compte du niveau de qualité
! * demandé.
* @param payLoad la liste des charges RTP de chaque format audio supporté.
* @param qualite niveau de qualité.
--- 194,199 ----
/**
! * Cette fonction retourne la coordonnée du format audio optimal de
! * réencodage en tenant compte du niveau de qualité.
* @param payLoad la liste des charges RTP de chaque format audio supporté.
* @param qualite niveau de qualité.
***************
*** 171,218 ****
*/
private int getBestQuality(int[] payLoad, int qualite) {
! int maxPL = 0;
!
! for(int i = 0; i < payLoad.length; i++)
! {
! if(payLoad[i] > maxPL)
! maxPL = payLoad[i];
! }
! for(int i = 0; i < payLoad.length; i++)
! {
! if(payLoad[i] == maxPL)
! return i;
! }
! return -1;
! }
!
! /**
! * Cette focntion retourne les coordonnées des formats audio et video
! * optimaux de réencodage. On ne tient pas encore compte du niveau de
! * qualité demandé.
! * @param payLoad le tableau des charges RTP de chaque couple possible de
! * formats supportés.
! * @param qualite niveau de qualité.
! * @return les coordonnées des formats audio et video optimaux choisis.
! */
! private int[] getBestQuality(int[][] payLoad, int qualite) {
! int maxPL = 0;
! int[] choix = new int[2];
! for(int i = 0; i < payLoad.length; i++) {
! for(int j = 0; j < payLoad[i].length; j++) {
! if (payLoad[i][j] > maxPL)
! maxPL = payLoad[i][j];
! }
! }
! for(int i = 0; i < payLoad.length; i++) {
! for (int j = 0; j < payLoad[i].length; j++) {
! if (payLoad[i][j] == maxPL) {
! choix[0] = i;
! choix[1] = j;
! return choix;
! }
}
}
! return null;
}
}
--- 201,215 ----
*/
private int getBestQuality(int[] payLoad, int qualite) {
! int maxPL = qualityToPayload[qualite - 1];
! int selected = 0;
! int payloadTmp = 0;
! for (int i = 0; i < payLoad.length; i++) {
! if (payLoad[i] >= payloadTmp && payLoad[i] <= maxPL) {
! payloadTmp = payLoad[i];
! selected = i;
}
}
! return selected;
}
}
|
|
From: <car...@us...> - 2003-03-24 02:54:29
|
Update of /cvsroot/madsserv/madsserv/src/server/processor
In directory sc8-pr-cvs1:/tmp/cvs-serv21811/server/processor
Modified Files:
Reencode.java ThreadReencode.java
Log Message:
Version stable et fonctionnelle
Index: Reencode.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/server/processor/Reencode.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -C2 -d -r1.18 -r1.19
*** Reencode.java 21 Mar 2003 02:50:34 -0000 1.18
--- Reencode.java 24 Mar 2003 02:54:25 -0000 1.19
***************
*** 41,44 ****
--- 41,45 ----
* {@link ThreadReencode} précédent.<br>
* La méthode {@link #stop} arrête les {@link ThreadReencode} encore en cours.
+ * @author Jean-Baptiste Mariotte
*/
public class Reencode
***************
*** 101,104 ****
--- 102,110 ----
/**
+ * Qualité de l'encodage JPEG (comprise entre 0 et 1).
+ */
+ protected float JPEGQuality = 0.5f;
+
+ /**
* Formats de réencodage suppportés par le <code>Processor</code>.
*/
***************
*** 257,263 ****
if (!reencoding) {
if (multiMedia) { // Fichier audio et video
currentThreadReencode = new ThreadReencode(inputML,
reencodingAudioFormat,
! reencodingVideoFormat, startTime, this, serverInitRef);
addLog("start;!reencoding;multimedia;1er TR contruit");
}
--- 263,273 ----
if (!reencoding) {
if (multiMedia) { // Fichier audio et video
+ if(originalVideoFormat.getEncoding().compareTo(VideoFormat.MPEG) == 0) {
+ // Si c'est un fichier encode en MPEG, on conserve le format initial
+ reencodingVideoFormat = originalVideoFormat;
+ }
currentThreadReencode = new ThreadReencode(inputML,
reencodingAudioFormat,
! reencodingVideoFormat, startTime, this, serverInitRef, JPEGQuality);
addLog("start;!reencoding;multimedia;1er TR contruit");
}
***************
*** 274,280 ****
addLog("start;reencoding;formerTR<-currentTR");
if (multiMedia) { // Fichier audio et video
currentThreadReencode = new ThreadReencode(inputML,
reencodingAudioFormat,
! reencodingVideoFormat, startTime, this, serverInitRef);
addLog("start;reencoding;multimedia;new TR contruit");
}
--- 284,294 ----
addLog("start;reencoding;formerTR<-currentTR");
if (multiMedia) { // Fichier audio et video
+ if(originalVideoFormat.getEncoding().compareTo(VideoFormat.MPEG) == 0) {
+ // Si c'est un fichier encode en MPEG, on conserve le format initial
+ reencodingVideoFormat = originalVideoFormat;
+ }
currentThreadReencode = new ThreadReencode(inputML,
reencodingAudioFormat,
! reencodingVideoFormat, startTime, this, serverInitRef, JPEGQuality);
addLog("start;reencoding;multimedia;new TR contruit");
}
***************
*** 413,416 ****
--- 427,438 ----
public void setReencodingTime(Time startTime) {
this.startTime = startTime;
+ }
+
+ /**
+ * Définit la qualité du réencodage JPEG.
+ * @param quality le niveau de qualité JPEG voulu.
+ */
+ public void setJPEGQuality(float JPEGQuality) {
+ this.JPEGQuality = JPEGQuality;
}
Index: ThreadReencode.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/server/processor/ThreadReencode.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** ThreadReencode.java 21 Mar 2003 02:50:34 -0000 1.12
--- ThreadReencode.java 24 Mar 2003 02:54:25 -0000 1.13
***************
*** 1,495 ****
! /**
! * Projet Madsserv
! * ThreadReencode.java
! *
! * Module de conversion des fichiers multimedia.
! * Thread de conversion du fichier multimedia.
! *
! * @author Jean-Baptiste Mariotte
! */
!
[...964 lines suppressed...]
! Thread.sleep(4000);
! reencodeRef.streamingRef.endOfMedia();
! }
! catch (Exception e) {}
! }
! }
! }
! }
!
! /**
! * Méthode envoyant un message de log au module de log.
! * @param message le message à écrire dans le fichier log.
! */
! private void addLog(String message) {
! if(serverInitRef.log.LOG_ENABLED) {
! String logToSend = new String("ThreadReencode;" + reencodeRef.clientId + ";" + message);
! serverInitRef.log.writeLog(logToSend);
! }
! }
}
|
|
From: <car...@us...> - 2003-03-24 02:54:29
|
Update of /cvsroot/madsserv/madsserv/src/server/log
In directory sc8-pr-cvs1:/tmp/cvs-serv21811/server/log
Modified Files:
LogCenter.java
Log Message:
Version stable et fonctionnelle
Index: LogCenter.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/server/log/LogCenter.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** LogCenter.java 21 Mar 2003 04:08:25 -0000 1.1
--- LogCenter.java 24 Mar 2003 02:54:25 -0000 1.2
***************
*** 5,24 ****
/**
! * <code>LogCenter</code> permet de centraliser des logs en offrant une methode unique dans le fichier
! * logs. Par defaut la date et l'heure sont enregistrees pour chaque log.
*/
public class LogCenter {
/**
! * Activation des logs à <code>true</code>, desactivation a <code>false</code>
*/
public boolean LOG_ENABLED;
!
protected String fileName;
protected PrintWriter file;
/**
* Constructeur
! * @param logEnabled active ou desactive les logs (@see LOG_ENABLED).
* @param _fileName le chemin du fichier logs.
*/
--- 5,29 ----
/**
! * <code>LogCenter</code> permet de centraliser des logs en offrant une méthode unique dans le fichier
! * logs. Par defaut la date et l'heure sont enregistrées pour chaque log.
*/
public class LogCenter {
/**
! * Activation des logs à <code>true</code>, désactivation à <code>false</code>
*/
public boolean LOG_ENABLED;
! /**
! * Chemin complet du fichier de log.
! */
protected String fileName;
+ /**
+ * <PrintWriter> sur lequel on écrit leslogs.
+ */
protected PrintWriter file;
/**
* Constructeur
! * @param logEnabled active ou désactive les logs (@see LOG_ENABLED).
* @param _fileName le chemin du fichier logs.
*/
***************
*** 29,33 ****
/**
! * Ouvre le fichier bufferise pour accueillir les logs en mode <code>append</code>.
*/
public void open() {
--- 34,38 ----
/**
! * Ouvre le fichier bufferisé pour accueillir les logs en mode <code>append</code>.
*/
public void open() {
***************
*** 42,46 ****
/**
* Ecrit une ligne de log dans le fichier log.
! * @param logDesc la description du log effectue.
*/
public void writeLog(String logDesc) {
--- 47,51 ----
/**
* Ecrit une ligne de log dans le fichier log.
! * @param logDesc la description du log effectué.
*/
public void writeLog(String logDesc) {
***************
*** 73,78 ****
/**
! * Active ou desactive les operations de log en cours d'utilisation.
! * @param logEnabled active ou desactive les logs (@see LOG_ENABLED).
*/
--- 78,83 ----
/**
! * Active ou désactive les opérations de log.
! * @param logEnabled active ou désactive les logs (@see LOG_ENABLED).
*/
|
|
From: <car...@us...> - 2003-03-24 02:54:28
|
Update of /cvsroot/madsserv/madsserv/src/client
In directory sc8-pr-cvs1:/tmp/cvs-serv21811/client
Modified Files:
Client.java ClientRTPManager.java DialogServer.java
MadsservClient.java
Log Message:
Version stable et fonctionnelle
Index: Client.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/client/Client.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** Client.java 23 Mar 2003 22:53:13 -0000 1.13
--- Client.java 24 Mar 2003 02:54:24 -0000 1.14
***************
*** 5,9 ****
/**
! * <code>Client </code> l'interface graphique du client, elle contient des references vers ThreadRTPManager et vers DialogServer
* @see MadsservClient
* @see DialogServer
--- 5,10 ----
/**
! * <code>Client </code> l'interface graphique du client, elle contient des references
! * vers {@link ThreadRTPManager} et vers {@link DialogServer}
* @see MadsservClient
* @see DialogServer
***************
*** 34,40 ****
private TextField URLChoice;
private TextField AdServer;
- //private CheckboxGroup cbg = new CheckboxGroup();
- //private Checkbox formatMPEG;
- //private Checkbox formatJPEG;
private Button go;
--- 35,38 ----
***************
*** 50,57 ****
private Socket mySocket = null;
private DialogServer dialogServer;
public LogCenter log;
! //l'identite du client qui vient d'etre cree
! public int clientID;
/**
--- 48,61 ----
private Socket mySocket = null;
private DialogServer dialogServer;
+
+ /**
+ * Référence sur le module de logs.
+ */
public LogCenter log;
! /**
! * L'identité du client qui vient d'être crée.
! */
! public int clientID;
/**
***************
*** 74,80 ****
/**
! * Cree la fenetre de visualisation du player
! * @param pp : PlayerPanel qui est une classe que nous avons crée
! * @param vid : booleen qui nous dit si le player a cree est de la video ou de l'audio
*/
--- 78,84 ----
/**
! * Insère le composant graphique du player.
! * @param pp : le compoant graphique du player.
! * @param vid : <code>true</code> si le composant graphique correspond à un player video, <code>false</code> sinon.
*/
***************
*** 196,201 ****
/**
! * Est à l'ecoute d'un evenement signifiant l'arret du client
! * @param e l'evenemet qui met fin au client
*/
public void menuFileExit_actionPerformed(ActionEvent e) {
--- 200,205 ----
/**
! * Est à l'écoute d'un événement signifiant l'arrêt du client.
! * @param e l'événement qui met fin au client.
*/
public void menuFileExit_actionPerformed(ActionEvent e) {
***************
*** 231,236 ****
/**
! * boutongo_actionPerformed Methode qui permet de lancer la connexion lorsque l'on clique sur le bouton go
! * @param evt l'evenement qui indique que l'on a clique sur le bouton go
*/
public void boutongo_actionPerformed(ActionEvent evt) {
--- 235,240 ----
/**
! * Lance la connexion lorsque l'on clique sur le bouton Go
! * @param evt l'événement qui indique que l'on a cliqué sur le bouton Go
*/
public void boutongo_actionPerformed(ActionEvent evt) {
***************
*** 256,261 ****
messageToSend[0] = getURL();
this.addLog("URL demande;" + messageToSend[0]);
- // messageToSend[1] = getFormatPrefere();
-
dialogServer.sendMessage(DialogServer.REQUEST_MEDIA, messageToSend);
}
--- 260,263 ----
***************
*** 263,267 ****
/**
! * Arrete l'objet dialogServer et met l'objet a null, met l'objet mySocket a null
*/
public void endConnexion() {
--- 265,270 ----
/**
! * Deconnecte le client en stoppant les traitements de <code>DialogServer</code>
! * et détruit les <code>DialogServer</code> <code>mySocket</code>.
*/
public void endConnexion() {
***************
*** 272,277 ****
/**
! * Permet l'affichage dans ErrorPopup d'un message d'erreur
! * @param messageErreur le message d'erreur que l'on souhaite afficher
*/
public void showError(String messageErreur) {
--- 275,280 ----
/**
! * Affiche dans ErrorPopup un message d'erreur.
! * @param messageErreur le message d'erreur que l'on souhaite afficher.
*/
public void showError(String messageErreur) {
***************
*** 280,285 ****
/**
! * Permet d'obtenir l'InetAddress du serveur sur lequel il faut se connecter, cette adresse est rentré à la main dans une zone de texte sur l'interface graphique du client
! * @return InetAddress du server
*/
public InetAddress getAddressServer() {
--- 283,289 ----
/**
! * Renvoie l'InetAddress du serveur sur lequel il faut se connecter, cette adresse
! * est rentrée dans une zone de texte de l'interface graphique du client.
! * @return InetAddress du serveur.
*/
public InetAddress getAddressServer() {
***************
*** 299,304 ****
/**
! * Permet d'obtenir le Numero de port du serveur, ce numero de port est rentre dans une zone de texte sur l'interface graphique du client
! * @return le numero du port sur lequel, on doit se connecter au serveur
*/
public int getServerPort() {
--- 303,309 ----
/**
! * Renvoie le numéro de port du serveur, ce numéro de port est rentré dans une
! * zone de texte de l'interface graphique du client.
! * @return le numéro du port sur lequel le client doit se connecter.
*/
public int getServerPort() {
***************
*** 314,319 ****
/**
! * Permet d'obtenir l'URL du fichier multimedia que l'on souhaite visionner, cet URL est rentre dans une zone de texte sur l'interface graphique du client
! * @return l'adresse du media demande
*/
public String getURL() {
--- 319,325 ----
/**
! * Renvoie l'URL du fichier multimedia que l'on souhaite visionner, cet URL est
! * rentrée dans une zone de texte de l'interface graphique du client.
! * @return l'adresse du media demandé.
*/
public String getURL() {
***************
*** 352,357 ****
/**
! * Permet d'afficher en bas du client un message
! * @param _message un message e sous forme de String ennvoye par le server ou par des modules du client
*/
public void setAfficheStatusBar(String _message) {
--- 358,363 ----
/**
! * Permet d'afficher en bas du client un message dans la barre d'état
! * @param _message le message ennvoyé par le serveur ou par des modules du client.
*/
public void setAfficheStatusBar(String _message) {
Index: ClientRTPManager.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/client/ClientRTPManager.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** ClientRTPManager.java 23 Mar 2003 22:53:13 -0000 1.11
--- ClientRTPManager.java 24 Mar 2003 02:54:24 -0000 1.12
***************
*** 21,26 ****
/**
! * <code>ClientRTPManager</code> classe qui recevoit les flux RTP envoyee par le serveur
! * <p> Ce module est inspire du module AVReveice2 qui est une solution JMF
* @see ThreadRTPManager
*/
--- 21,27 ----
/**
! * <code>ClientRTPManager</code> classe qui reçoit les flux RTP envoyés par le serveur
! * <p>
! * Cette classe contient des parties de code provenant de AVReceive2.java1.4 01/03/13
* @see ThreadRTPManager
*/
***************
*** 29,33 ****
ControllerListener {
/**
! * champs de la classe
*/
--- 30,34 ----
ControllerListener {
/**
! * Champs de la classe
*/
***************
*** 51,56 ****
/**
! * Permet de demarrer l'attente de flux RTP sur les deux ports spécifiés en parametre
! * return boolean si l'initialisation est reussit
*/
protected boolean initialize() {
--- 52,57 ----
/**
! * Lance l'attente de flux RTP sur les deux ports spécifiés en paramètre.
! * @return <code>true</code> si l'initialisation est réussie, <code>false</code> sinon.
*/
protected boolean initialize() {
***************
*** 148,153 ****
/**
! * isDone methode qui regarde si il y a des player qui sont crees
! * @return un booleen qui nous indique si la taille de players est nul
*/
public boolean isDone() {
--- 149,155 ----
/**
! * Renvoie l'état de <code>ClientRTPManager</code>.
! * @return <code>true</code> s'il ne reste plus de players (la diffusion est terminée),
! * <code>false</code> sinon.
*/
public boolean isDone() {
***************
*** 156,160 ****
/**
! * Ferme les player et les sessions de RTPManager
*/
protected void close() {
--- 158,162 ----
/**
! * Ferme les players et les sessions RTPManager.
*/
protected void close() {
***************
*** 195,201 ****
/**
! * Recherche un player p
! * @param p le player rechercher
! * @return un objet du type MyPlayer correspondant au player p
*/
MyPlayer find(Player p) {
--- 197,203 ----
/**
! * Recherche un player dans le tableau des players.
! * @param p le player recherché.
! * @return un objet du type <code>MyPlayer</code> encapsulant le player.
*/
MyPlayer find(Player p) {
***************
*** 210,216 ****
/**
! * Recherche le player qui est en charge de ce stream
* @param strm le stream
! * @return le MyPlayer qui est en charge de ce stream
*/
MyPlayer find(ReceiveStream strm) {
--- 212,218 ----
/**
! * Recherche le player qui est en charge de ce stream.
* @param strm le stream
! * @return le <code>MyPlayer</code> qui est en charge de ce stream.
*/
MyPlayer find(ReceiveStream strm) {
***************
*** 225,231 ****
/**
! * Retourne la position du player dans players
* @param p le player p dont on cherche la position
! * @return l'entier correspondant à cette position
*/
int findIntPlayer(Player p) {
--- 227,233 ----
/**
! * Retourne la position du player dans le tableau des players.
* @param p le player p dont on cherche la position
! * @return l'entier correspondant à cette position
*/
int findIntPlayer(Player p) {
***************
*** 241,245 ****
/**
* update est un SessionListener.
! * @param SessionEvent evt l'evenement qui indique l'arrive d'un participant
*/
public synchronized void update(SessionEvent evt) {
--- 243,247 ----
/**
* update est un SessionListener.
! * @param evt l'événement qui indique l'arrive d'un participant.
*/
public synchronized void update(SessionEvent evt) {
***************
*** 251,256 ****
/**
! * Methode qui met a jour le player lorsqu'un nouveau flux arrive
! * @param evt un Evenement marquant l'arrivee d'un flux
*/
public synchronized void update(ReceiveStreamEvent evt) {
--- 253,258 ----
/**
! * Met à jour le player lorsqu'un nouveau flux arrive.
! * @param evt l'événement marquant l'arrivee d'un flux
*/
public synchronized void update(ReceiveStreamEvent evt) {
***************
*** 323,327 ****
if (stream != null && stream.getDataSource() != null) {
DataSource ds = stream.getDataSource();
! // Trouve les foramts diffusées
RTPControl ctl = (RTPControl) ds.getControl(
"javax.media.rtp.RTPControl");
--- 325,329 ----
if (stream != null && stream.getDataSource() != null) {
DataSource ds = stream.getDataSource();
! // Trouve les foramts diffus�es
RTPControl ctl = (RTPControl) ds.getControl(
"javax.media.rtp.RTPControl");
***************
*** 350,354 ****
/**
* ControllerListener pour les Players.
! * @param ce qui est le ControllerEvent
*/
public synchronized void controllerUpdate(ControllerEvent ce) {
--- 352,356 ----
/**
* ControllerListener pour les Players.
! * @param le ControllerEvent
*/
public synchronized void controllerUpdate(ControllerEvent ce) {
***************
*** 452,457 ****
}
/**
! * Retourne le temps actuel de Lecture du media
! * @return le temps actuel de diffusion
*/
public double currentMediaTime() {
--- 454,459 ----
}
/**
! * Retourne le temps actuel de lecture du media.
! * @return le temps actuel de diffusion.
*/
public double currentMediaTime() {
***************
*** 462,467 ****
/**
! * Ajoute des Log dans le fichiers contenant les Logs
! * @param message le message que l'on veut ajouter dans la table des Log
*/
private void addLog(String message) {
--- 464,469 ----
/**
! * Ajoute une ligne de log dans le fichier contenant de logs.
! * @param message le message que l'on veut ajouter dans le fichier de logs.
*/
private void addLog(String message) {
***************
*** 477,481 ****
/**
! * <code>SessionLabel</code> Classe utile pour analyser les session addresses.
*/
class SessionLabel {
--- 479,483 ----
/**
! * Classe utile pour parser les session addresses.
*/
class SessionLabel {
***************
*** 570,574 ****
/**
! * <code>MyPlayer</code>la classe MyPlayer
*/
class MyPlayer {
--- 572,576 ----
/**
! * Classe MyPlayer
*/
class MyPlayer {
Index: DialogServer.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/client/DialogServer.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** DialogServer.java 21 Mar 2003 02:36:41 -0000 1.11
--- DialogServer.java 24 Mar 2003 02:54:24 -0000 1.12
***************
*** 4,11 ****
/**
! * <code>DialogServer c'est la classe qui herite de la classe dialogSocket et qui gere les dialogues avec le serveur
* @see DialogSocket
- * @see ThreadWrite
* @see ThreadRead
* @author Xavier Deplancq
*/
--- 4,16 ----
/**
! * <code>DialogServer</code> gère la communication par socket entre le client et le
! * serveur (côté client) grâce à deux threads (lecture et écriture).
! * <p>
! * <code>DialogServer</code> fournit des méthodes d'envoi de messages et de
! * réception de messages en utilisant des threads de classe {@link ThreadRead} et
! * {@link ThreadWrite} pour accéder au socket.
* @see DialogSocket
* @see ThreadRead
+ * @see ThreadWrite
* @author Xavier Deplancq
*/
***************
*** 15,30 ****
/**
! * declaration des constantes d'envoie et de reception des messages
*/
! final static int SEND_ID = 1;
! final static int REQUEST_MEDIA = 2;
! final static int PROCESS_MEDIA = 3;
! final static int END_CONNEXION_FROM_CLIENT = 4;
! final static int END_CONNEXION_FROM_SERVER = 5;
! final static int REPEAT_MESSAGE = 6;
! final static int REQUEST_CURRENT_TIME = 7;
! final static int ANSWER_CURRENT_TIME = 8;
! final static int ERROR_MESSAGE = 9;
! final static int INFORMATION = 11;
private Client client;
--- 20,62 ----
/**
! * Type du message envoyant au client l'ID affectée.
*/
! public final static int SEND_ID = 1;
! /**
! * Type du message provenant du client contenant l'adresse du media demandé.
! */
! public final static int REQUEST_MEDIA = 2;
! /**
! * Type du message indiquant au client qu'il peut instancier le RTPManager.
! */
! public final static int PROCESS_MEDIA = 3;
! /**
! * Type du message envoyé par le client indiquant qu'il coupe la connexion.
! */
! public final static int END_CONNEXION_FROM_CLIENT = 4;
! /**
! * Type du message envoyé au client pour l'avertir de la déconnexion.
! */
! public final static int END_CONNEXION_FROM_SERVER = 5;
! /**
! * Type du message envoyé par le client pour demander la répétition du message.
! */
! public final static int REPEAT_MESSAGE = 6;
! /**
! * Type du message envoyé au client pour lui demander le temps media courant.
! */
! public final static int REQUEST_CURRENT_TIME = 7;
! /**
! * Type du message envoyé par le client communiquant le temps media courant.
! */
! public final static int ANSWER_CURRENT_TIME = 8;
! /**
! * Type du message envoyé au client pour lui signaler une erreur.
! */
! public final static int ERROR_MESSAGE = 9;
! /**
! * Type du message envoyé au client transmettant des informations contextuelles.
! */
! public final static int INFORMATION = 11;
private Client client;
***************
*** 42,48 ****
/**
! * Methode qui a ete declare abstraite dans DialogSocket et qui gere l'arrivee de nouveaux messages du serveur
! * @param _type type de message qui arrive (c'est un entier)
! * @param _message tableau de chaine de characteres qui contient les messages du serveur
*/
public void incomingMessage(int _type, String[] _message) {
--- 74,83 ----
/**
! * Traite l'arrivée d'un nouveau message sur le socket. Le message passé en
! * paramètre de <code>incomingMessage</code> est déjà pré-formaté sous forme
! * d'un tableau de {@link String}.
! * @param _type le type du message.
! * @param _message le tableau de <code>String</code> contenant les champs du
! * message reçu.
*/
public void incomingMessage(int _type, String[] _message) {
***************
*** 282,287 ****
}
}
/**
! * Evite les Erreurs lors d'interrupion innatendu
*/
public void resetByRemote() {
--- 317,323 ----
}
}
+
/**
! * Evite les erreurs lors d'interrupions du socket innatendues.
*/
public void resetByRemote() {
***************
*** 291,296 ****
/**
! * Permet d'ajouter des Logs dans le fichier contenatn les logs
! * @param le message de Log a ajouter
*/
private void addLog(String message) {
--- 327,332 ----
/**
! * Ajoute une ligne de log dans le fichier de logs.
! * @param le message a logguer.
*/
private void addLog(String message) {
Index: MadsservClient.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/client/MadsservClient.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** MadsservClient.java 21 Mar 2003 02:36:41 -0000 1.10
--- MadsservClient.java 24 Mar 2003 02:54:24 -0000 1.11
***************
*** 1,15 ****
- //import javax.swing.UIManager;
import java.awt.*;
import java.net.*;
/**
! * <code>MadsservClient</code> Classe qui contient la methode main du client du projet, c'est lui qui le lance
* @author Xavier Deplancq
* @see Client
- **/
-
- /**
- * Classe MadsservClient
*/
public class MadsservClient {
/**
--- 1,11 ----
import java.awt.*;
import java.net.*;
/**
! * MadsservClient est la classe lançant le client.
* @author Xavier Deplancq
* @see Client
*/
+
public class MadsservClient {
/**
|
|
From: <dep...@us...> - 2003-03-23 22:53:19
|
Update of /cvsroot/madsserv/madsserv/src/client
In directory sc8-pr-cvs1:/tmp/cvs-serv11683
Modified Files:
Client.java ClientRTPManager.java PlayerPanel.java
Log Message:
le serveur avec les bons commentaires
Index: Client.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/client/Client.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** Client.java 21 Mar 2003 02:36:40 -0000 1.12
--- Client.java 23 Mar 2003 22:53:13 -0000 1.13
***************
*** 56,60 ****
/**
! * Contructeur de la Classe Client
*/
--- 56,60 ----
/**
! * Contructeur de la Classe Client, lance l'interface graphique
*/
***************
*** 99,103 ****
insVideo = true;
}
! // on regarde si la video est deja insere ou non
else if (!insVideo) {
playerPanel = pp;
--- 99,103 ----
insVideo = true;
}
! // dans le cas audio on regarde si la video est deja insere ou non
else if (!insVideo) {
playerPanel = pp;
***************
*** 119,124 ****
this.setTitle("Madsserv Client");
setAfficheStatusBar("Bienvenue");
! URLChoice = new TextField("file:///c:\\temp\\lco.avi");
! AdServer = new TextField("dronej.rezel.com:5200");
menuFile.setLabel("File");
menuOpenURL.setLabel("Open URL");
--- 119,124 ----
this.setTitle("Madsserv Client");
setAfficheStatusBar("Bienvenue");
! URLChoice = new TextField("file:///e:\\jmf\\lco.avi");
! AdServer = new TextField("137.194.132.36:5200");
menuFile.setLabel("File");
menuOpenURL.setLabel("Open URL");
***************
*** 238,241 ****
--- 238,242 ----
String[] messageToSend;
+ //on regarde si le socket existe deja ou non
if (mySocket == null) {
try {
***************
*** 250,253 ****
--- 251,255 ----
}
+ //dans le cas ou le socket existe c'est une demande de changement de fichier
else {
messageToSend = new String[1];
***************
*** 261,265 ****
/**
! * Arrete le module DialogServer et met l'objet a null, met l'objet mySocket a null
*/
public void endConnexion() {
--- 263,267 ----
/**
! * Arrete l'objet dialogServer et met l'objet a null, met l'objet mySocket a null
*/
public void endConnexion() {
Index: ClientRTPManager.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/client/ClientRTPManager.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** ClientRTPManager.java 21 Mar 2003 02:36:40 -0000 1.10
--- ClientRTPManager.java 23 Mar 2003 22:53:13 -0000 1.11
***************
*** 90,94 ****
if (ipAddr.isMulticastAddress()) {
- // local and remote address pairs are identical:
localAddr = new SessionAddress(ipAddr,
session.port,
--- 90,93 ----
***************
*** 124,128 ****
long then = System.currentTimeMillis();
! long waitingPeriod = 30000; // wait for a maximum of 30 secs.
try {
--- 123,127 ----
long then = System.currentTimeMillis();
! long waitingPeriod = 30000; // attente maximum de 30 secondes
try {
***************
*** 258,263 ****
RTPManager mgr = (RTPManager) evt.getSource();
! Participant participant = evt.getParticipant(); // could be null.
! ReceiveStream stream = evt.getReceiveStream(); // could be null.
if (evt instanceof RemotePayloadChangeEvent) {
--- 257,262 ----
RTPManager mgr = (RTPManager) evt.getSource();
! Participant participant = evt.getParticipant(); // peut etre nulle
! ReceiveStream stream = evt.getReceiveStream(); // peut etre nulle
if (evt instanceof RemotePayloadChangeEvent) {
***************
*** 275,279 ****
DataSource ds = stream.getDataSource();
! // Find out the formats.
RTPControl ctl = (RTPControl) ds.getControl(
"javax.media.rtp.RTPControl");
--- 274,278 ----
DataSource ds = stream.getDataSource();
! // trouve les formats
RTPControl ctl = (RTPControl) ds.getControl(
"javax.media.rtp.RTPControl");
***************
*** 363,367 ****
}
! // Get this when the internal players are realized.
if (ce instanceof RealizeCompleteEvent) {
MyPlayer myp = find(p);
--- 362,366 ----
}
! // On passe par ici lorsque les player sont realises
if (ce instanceof RealizeCompleteEvent) {
MyPlayer myp = find(p);
***************
*** 369,378 ****
i = findIntPlayer(p);
if (myp == null) {
- // Some strange happened.
System.err.println("Internal error!");
System.exit( -1);
}
myp.initialize();
- // p.start();
--- 368,375 ----
***************
*** 504,508 ****
session = session.substring(1);
! // Now see if there's a addr specified.
}
off = session.indexOf('/');
--- 501,505 ----
session = session.substring(1);
! // on regarde si une adresse est bien specifie
}
off = session.indexOf('/');
***************
*** 515,519 ****
addr = session.substring(0, off);
session = session.substring(off + 1);
! // Now see if there's a port specified
off = session.indexOf('/');
if (off == -1) {
--- 512,516 ----
addr = session.substring(0, off);
session = session.substring(off + 1);
! // on regarde si un port est bien specifie
off = session.indexOf('/');
if (off == -1) {
***************
*** 525,529 ****
portStr = session.substring(0, off);
session = session.substring(off + 1);
! // Now see if there's a ttl specified
off = session.indexOf('/');
if (off == -1) {
--- 522,526 ----
portStr = session.substring(0, off);
session = session.substring(off + 1);
! // on regarde si un ttl est specifie
off = session.indexOf('/');
if (off == -1) {
Index: PlayerPanel.java
===================================================================
RCS file: /cvsroot/madsserv/madsserv/src/client/PlayerPanel.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** PlayerPanel.java 21 Mar 2003 02:36:42 -0000 1.9
--- PlayerPanel.java 23 Mar 2003 22:53:13 -0000 1.10
***************
*** 6,19 ****
import javax.media.*;
! /*import javax.media.rtp.*;
! import javax.media.rtp.event.*;
! import javax.media.rtp.rtcp.*;
! import javax.media.protocol.*;
! import javax.media.protocol.DataSource;
! import javax.media.format.AudioFormat;
! import javax.media.format.VideoFormat;
! import javax.media.Format;
! import javax.media.format.FormatChangeEvent;
! import javax.media.control.BufferControl;*/
/**
--- 6,10 ----
import javax.media.*;
!
/**
|
Update of /cvsroot/madsserv/madsserv/src/simulator In directory sc8-pr-cvs1:/tmp/cvs-serv21623 Modified Files: DialogServer.java ErrorPopUp.java MadsservSimulator.java Script.java Simulator.java ThreadScript.java Log Message: Mise a jour javadoc Index: DialogServer.java =================================================================== RCS file: /cvsroot/madsserv/madsserv/src/simulator/DialogServer.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** DialogServer.java 21 Mar 2003 01:18:12 -0000 1.4 --- DialogServer.java 23 Mar 2003 15:12:42 -0000 1.5 *************** *** 1,2 **** --- 1,11 ---- + /** + * Projet Madsserv + * DialogServer.java + * + * Module de simulation des changements de qualite. + * + * @author Christele Champagnat + */ + import java.util.*; import java.io.*; *************** *** 6,10 **** /** ! * DialogServer est la classe qui herite de la classe dialogSocket et qui gere les dialogues avec le serveur * @author Christele Champagnat */ --- 15,21 ---- /** ! * DialogServer est la classe qui hérite de la classe dialogSocket et qui ! * gère les dialogues avec le serveur.<br> ! * Il y a une classe instanciée par client connecté. * @author Christele Champagnat */ *************** *** 30,36 **** /** ! * incomingMessage methode qui a ete declare abstraite dans DialogSocket et qui gere l'arivee de nouveaux messages du serveur ! * @param _type type de message qui arrive (c'est un entier) ! * @param _message tableau de chaine de characteres qui contient les messages du serveur */ public void incomingMessage(int _type, String[] _message) { --- 41,49 ---- /** ! * Méthode qui a été déclaré abstraite dans ! * DialogSocket et qui gère l'arrivée de nouveaux messages du serveur. ! * @param _type type de message qui arrive (c'est un entier). ! * @param _message tableau de chaîne de caractères qui contient ! * les messages du serveur. */ public void incomingMessage(int _type, String[] _message) { *************** *** 94,98 **** else { simulator.tableClients.updateClientRecord(clientID, qualityLevel); ! addLog("mise à jour du client;" + _message[0].concat(";" + _message[1])); } --- 107,111 ---- else { simulator.tableClients.updateClientRecord(clientID, qualityLevel); ! addLog("mise � jour du client;" + _message[0].concat(";" + _message[1])); } *************** *** 101,107 **** } /** ! * Envoie les messages sur le Socket ! * @param _type le type de message a envoyer ! * @param _message le message a envoyer */ public void sendMessage(int _type, String[] _message) { --- 114,120 ---- } /** ! * Envoie les messages sur le Socket. ! * @param _type le type de message à envoyer. ! * @param _message le message à envoyer. */ public void sendMessage(int _type, String[] _message) { *************** *** 123,128 **** } /** ! * Ajoute des Log au fichier de Log ! * @param message le message a envoyer */ private void addLog(String message) { --- 136,141 ---- } /** ! * Ajoute des Log au fichier de Log. ! * @param message le message à envoyer. */ private void addLog(String message) { *************** *** 135,138 **** --- 148,154 ---- } + /** + * Ferme le client lors d'une déconnexion brutale du serveur. + */ public void resetByRemote() { simulator.endConnexion(); Index: ErrorPopUp.java =================================================================== RCS file: /cvsroot/madsserv/madsserv/src/simulator/ErrorPopUp.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ErrorPopUp.java 21 Mar 2003 01:18:12 -0000 1.3 --- ErrorPopUp.java 23 Mar 2003 15:12:43 -0000 1.4 *************** *** 1,2 **** --- 1,11 ---- + /** + * Projet Madsserv + * ErrorPopUp.java + * + * Module de simulation des changements de qualite. + * + * @author Xavier Deplancq + */ + import java.awt.*; import java.net.*; *************** *** 6,13 **** /** ! * <code>ErrorPopUp</code> popup qui apparait lorsque des erreurs apparaissent. * @author Xavier Deplancq */ - public class ErrorPopUp extends Frame { --- 15,21 ---- /** ! * Fenêtre "pop up" qui apparaît lorsqu'une erreur survient. * @author Xavier Deplancq */ public class ErrorPopUp extends Frame { *************** *** 26,34 **** /** ! * Constructeur de la classe ErrorPopUp ! * @param errMessage le Message qui doit etre affiche ! * @param _simulator la reference du simulator */ - public ErrorPopUp(String errMessage, Simulator _simulator) { enableEvents(AWTEvent.WINDOW_EVENT_MASK); --- 34,41 ---- /** ! * Constructeur de la classe ErrorPopUp. ! * @param errMessage le Message qui doit être affiché. ! * @param _simulator la référence du simulator. */ public ErrorPopUp(String errMessage, Simulator _simulator) { enableEvents(AWTEvent.WINDOW_EVENT_MASK); *************** *** 74,81 **** /** ! * Fait disparaitre le popup lorsqu'on appuie sur OK ! * @param e : l'evenement qui annonce qu'on a appuyer sur OK */ - public void OK_actionPerformed(ActionEvent e) { setVisible(false); --- 81,88 ---- /** ! * Fait disparaître la "pop up" lorsqu'on appuie sur OK. ! * @param e : l'événement qui annonce qu'on a appuyé sur ! * OK. */ public void OK_actionPerformed(ActionEvent e) { setVisible(false); *************** *** 83,90 **** /** ! * Appelle lorsque l'on ferme la boite de dialogue ! * @param e : l evenement qui indique que l'on ferme la fenetre */ - protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); --- 90,97 ---- /** ! * Appellé lorsque l'on ferme la boîte de dialogue. ! * @param e : l'événement qui indique que l'on ferme la ! * fenêtre. */ protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); *************** *** 95,109 **** /** ! * Affiche la boite de dialogue */ - public void showWindow() { setVisible(true); } /** ! * <code>ErrorPopUp_OK_ActionAdapter</code> Classe qui ecoute si l'on appui sur le bouton OK */ - class ErrorPopUp_OK_ActionAdapter implements ActionListener { --- 102,116 ---- /** ! * Affiche la boîte de dialogue. */ public void showWindow() { setVisible(true); } + /** ! * <code>ErrorPopUp_OK_ActionAdapter</code> Classe qui écoute si l'on ! * appuie sur le bouton OK. */ class ErrorPopUp_OK_ActionAdapter implements ActionListener { *************** *** 113,119 **** this.adaptee = adaptee; } /** ! * Ecoute l'arrivee d'un evenement e ! * @param e l'evenement */ public void actionPerformed(ActionEvent e) { --- 120,127 ---- this.adaptee = adaptee; } + /** ! * Ecoute l'arrivée d'un événement e. ! * @param e l'événement. */ public void actionPerformed(ActionEvent e) { Index: MadsservSimulator.java =================================================================== RCS file: /cvsroot/madsserv/madsserv/src/simulator/MadsservSimulator.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** MadsservSimulator.java 21 Mar 2003 01:18:12 -0000 1.4 --- MadsservSimulator.java 23 Mar 2003 15:12:43 -0000 1.5 *************** *** 1,2 **** --- 1,11 ---- + /** + * Projet Madsserv + * MadsservSimulator.java + * + * Module de simulation des changements de qualite. + * + * @author Christele Champagnat + */ + import javax.swing.UIManager; import java.awt.*; *************** *** 4,8 **** /** ! * MadsservSimulator est la classe MadsservSimulator * @author Christele Champagnat */ --- 13,17 ---- /** ! * MadsservSimulator est la classe principale lançant le simulateur. * @author Christele Champagnat */ *************** *** 14,18 **** /** ! * MadsservSimulator est le constructeur de la classe */ public MadsservSimulator() { --- 23,27 ---- /** ! * Constructeur de la classe. */ public MadsservSimulator() { *************** *** 42,50 **** /** ! * Methode main du Simulateur qui lance toute l'interface graphique ainsi que la gestiondes sockets et des tables dynamiques */ - public static void main(String[] args) { - new MadsservSimulator(); } --- 51,58 ---- /** ! * Méthode main du Simulateur qui lance toute l'interface graphique ! * ainsi que la gestion des sockets et des tables dynamiques. */ public static void main(String[] args) { new MadsservSimulator(); } Index: Script.java =================================================================== RCS file: /cvsroot/madsserv/madsserv/src/simulator/Script.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Script.java 21 Mar 2003 01:18:12 -0000 1.1 --- Script.java 23 Mar 2003 15:12:43 -0000 1.2 *************** *** 1,6 **** ! import java.io.*; public class Script { public Script(Simulator sim, String nomFichier) { ThreadScript interpreteur = null; --- 1,23 ---- ! /** ! * Projet Madsserv ! * Script.java ! * ! * Module de simulation des changements de qualite. ! * ! * @author Emmanuel Vignon ! */ + import java.io.*; + /** + * Crée le thread d'interprétation de script. + */ public class Script { + /** + * Constructeur de la classe. + * @param sim référence du simulateur correspondant. + * @param nomFichier le nom du fichier contenant le script à + * éxécuter. + */ public Script(Simulator sim, String nomFichier) { ThreadScript interpreteur = null; Index: Simulator.java =================================================================== RCS file: /cvsroot/madsserv/madsserv/src/simulator/Simulator.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Simulator.java 21 Mar 2003 01:18:12 -0000 1.4 --- Simulator.java 23 Mar 2003 15:12:43 -0000 1.5 *************** *** 1,2 **** --- 1,11 ---- + /** + * Projet Madsserv + * Simulator.java + * + * Module de simulation des changements de qualite. + * + * @author Christele Champagnat + */ + import java.awt.*; import java.net.*; *************** *** 12,18 **** /** ! * <code>Simulator</code> ! * Classe de l'interface graphique du simulateur, ! * Elle gère une table des connexions dynamiquement * @author Christele Champagnat */ --- 21,26 ---- /** ! * Classe de l'interface graphique du simulateur.<br> ! * Elle gère dynamiquement une table des connexions. * @author Christele Champagnat */ *************** *** 55,59 **** private Label tabClientIdLabel = new Label(); ! //graphique private GridLayout gridLayout2 = new GridLayout(1, 1); private BorderLayout borderLayout1 = new BorderLayout(); --- 63,67 ---- private Label tabClientIdLabel = new Label(); ! //graphique private GridLayout gridLayout2 = new GridLayout(1, 1); private BorderLayout borderLayout1 = new BorderLayout(); *************** *** 70,76 **** /** ! * Constructeur de la classe Simulator */ - // Construction du simulateur public Simulator() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); --- 78,83 ---- /** ! * Constructeur de la classe Simulator. */ public Simulator() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); *************** *** 88,91 **** --- 95,102 ---- } + /** + * Enregistrement des logs dans le fichier de logs. + * @param message message à enregistrer dans le fichier de logs. + */ private void addLog(String message) { *************** *** 99,105 **** /** ! * Construit et Initialise l'interface graphique du simulateur */ - //initialisation de la fenetre private void jbInit() throws Exception { contentPane = this; --- 110,115 ---- /** ! * Construit et initialise l'interface graphique du simulateur. */ private void jbInit() throws Exception { contentPane = this; *************** *** 110,114 **** tableClients.setgraph(jPanelReport); ! //création de la zone de texte qualityChoice = new TextField(""); clientId = new TextField(""); --- 120,124 ---- tableClients.setgraph(jPanelReport); ! //cr�ation de la zone de texte qualityChoice = new TextField(""); clientId = new TextField(""); *************** *** 130,140 **** this.setMenuBar(menuBar1); ! //création du boutton Start go = new JButton("Start!"); go.setPreferredSize(new Dimension(70, 25)); go.addActionListener(new Simulator_boutongo_ActionAdapter(this)); ! qualityLabel.setText("qualité client :"); ! clientIDLabel.setText("Identité client:"); erreurLabel.setText("script:"); AdLabel.setText("Serv :"); --- 140,150 ---- this.setMenuBar(menuBar1); ! //cr�ation du boutton Start go = new JButton("Start!"); go.setPreferredSize(new Dimension(70, 25)); go.addActionListener(new Simulator_boutongo_ActionAdapter(this)); ! qualityLabel.setText("qualit� client :"); ! clientIDLabel.setText("Identit� client:"); erreurLabel.setText("script:"); AdLabel.setText("Serv :"); *************** *** 197,201 **** /** * Ferme le simulateur lors d'un clic sur exit. ! * @param e l'evenement cree par un clic sur exit */ public void itemExit_actionPerformed(ActionEvent e) { --- 207,211 ---- /** * Ferme le simulateur lors d'un clic sur exit. ! * @param e l'événement créé par un clic sur exit. */ public void itemExit_actionPerformed(ActionEvent e) { *************** *** 216,221 **** /** ! * Donne l'etat de la fenetre ! * @param e l'evenement lié à la fenetre */ protected void processWindowEvent(WindowEvent e) { --- 226,231 ---- /** ! * Donne l'état de la fenêtre. ! * @param e l'événement lié à la fenêtre. */ protected void processWindowEvent(WindowEvent e) { *************** *** 227,233 **** /** ! * Lance le traitement lié au clic sur le bouton Start. ! * Elle recupere l'identité du client ainsi que son nouveau niveau de qualité, ouvre des sockets en direction du serveur et envoi ces informations ! * @param evt l'evenement cree par un clic sur le bouton Start. */ public void boutongo_actionPerformed(ActionEvent evt) { --- 237,246 ---- /** ! * Lance le traitement lié au clic sur le bouton Start.<br> ! * Elle récupère l'identité du client ainsi que son ! * nouveau niveau de qualité, ouvre des sockets en direction du serveur ! * et envoie ces informations. ! * @param evt l'événement créé par un clic sur le ! * bouton Start. */ public void boutongo_actionPerformed(ActionEvent evt) { *************** *** 267,273 **** /** ! * Permet d'obtenir l'InetAddress du serveur sur lequel il faut se connecter. ! * Cette adresse est rentré à la main dans une zone de texte sur l'interface graphique du simulateur ! * @return InetAddress du server */ public InetAddress getAddressServer() { --- 280,287 ---- /** ! * Permet d'obtenir l'InetAddress du serveur sur lequel il faut se connecter.<br> ! * Cette adresse est rentrée à la main dans une zone de texte ! * sur l'interface graphique du simulateur. ! * @return InetAddress du serveur. */ public InetAddress getAddressServer() { *************** *** 287,293 **** /** ! * Permet d'obtenir le Numero de port du serveur. ! * Ce numero de port est rentre dans une zone de texte sur l'interface graphique du simulateur ! * @return int : numero du port sur lequel, on doit se connecter au serveur */ public int getServerPort() { --- 301,308 ---- /** ! * Permet d'obtenir le numéro de port du serveur.<br> ! * Ce numéro de port est rentré dans une zone de texte sur ! * l'interface graphique du simulateur. ! * @return int numéro du port sur lequel on doit se connecter au serveur. */ public int getServerPort() { *************** *** 303,309 **** /** ! * Permet d'obtenir le niveau de qualité du client ! * Ce niveau de qualité est rentre dans une zone de texte sur l'interface graphique du simulateur ! * @return string niveau de qualité qui est demandé */ public String getqualityClient() { --- 318,325 ---- /** ! * Permet d'obtenir le niveau de qualité du client. ! * Ce niveau de qualité est rentré dans une zone de texte sur ! * l'interface graphique du simulateur. ! * @return niveau de qualité qui est demandé. */ public String getqualityClient() { *************** *** 313,322 **** } public String getScript() { return script.getText(); } ! /** Retourne l'identite du client ! * @return string identite du client concerné */ public String getClientId() { --- 329,343 ---- } + /** + * Permet d'obtenir l'adresse du fichier de script à + * éxécuter. + * @return l'adresse du fichier de script. + */ public String getScript() { return script.getText(); } ! /** Retourne l'identité du client. ! * @return l'identité du client concerné. */ public String getClientId() { *************** *** 327,331 **** /** ! *Permet de stopper une connexion */ public void endConnexion() { --- 348,352 ---- /** ! * Permet d'arrêter une connexion. */ public void endConnexion() { *************** *** 335,340 **** /** ! * Affiche dans une popup un string ! * @param messageErreur message que l'on veut afficher */ public void showError(String messageErreur) { --- 356,361 ---- /** ! * Affiche un message dans une fenêtre "pop up". ! * @param messageErreur message que l'on veut afficher. */ public void showError(String messageErreur) { *************** *** 343,352 **** } ! /**<code>Simulator_itemExit_ActionAdapter</code> ! Classe qui va creer un objet simulator sur lequel on va definir les methodes pour le bouton exit */ class Simulator_itemExit_ActionAdapter implements ActionListener { ! Simulator adaptee; Simulator_itemExit_ActionAdapter(Simulator adaptee) { this.adaptee = adaptee; --- 364,380 ---- } ! /** ! * Classe qui va créer un objet <code>Simulator</code> sur lequel on va ! * définir les méthodes pour le bouton exit. */ class Simulator_itemExit_ActionAdapter implements ActionListener { ! ! private Simulator adaptee; ! ! /** ! * Constructeur de la classe. ! * @param adaptee référence du simulateur correspondant. ! */ Simulator_itemExit_ActionAdapter(Simulator adaptee) { this.adaptee = adaptee; *************** *** 354,360 **** /** ! * Apelle la methode itemExit_actionPerformed de la classesimulator. ! *{@link} itemExit_actionPerformed ! * @param e l'evenement si on clic sur exit */ public void actionPerformed(ActionEvent e) { --- 382,388 ---- /** ! * Apelle la méthode {@link Simulator#itemExit_actionPerformed} de la ! * classe {@link Simulator}. ! * @param e l'événement si on clique sur exit. */ public void actionPerformed(ActionEvent e) { *************** *** 363,373 **** } ! /**<code>Simulator_boutongo_ActionAdapter</code> ! * Classe qui va creer un objet simulator sur lequel on va definir les methodes pour le bouton go */ class Simulator_boutongo_ActionAdapter implements ActionListener { - Simulator adaptee; Simulator_boutongo_ActionAdapter(Simulator adaptee) { this.adaptee = adaptee; --- 391,407 ---- } ! /** ! * Classe qui va créer un objet {@link Simulator} sur lequel on va ! * définir les méthodes pour le bouton go. */ class Simulator_boutongo_ActionAdapter implements ActionListener { + private Simulator adaptee; + + /** + * Contructeur de la classe. + * @param adaptee référence du simulateu correspondant. + */ Simulator_boutongo_ActionAdapter(Simulator adaptee) { this.adaptee = adaptee; *************** *** 375,383 **** /** ! * Apelle la methode boutongo_actionPerformed de la classe simulator ! *{@link} boutongo_actionPerformed ! * @param e l'evenement si on clic sur Start */ - public void actionPerformed(ActionEvent evt) { adaptee.boutongo_actionPerformed(evt); --- 409,416 ---- /** ! * Appelle la méthode {@link Simulator#boutongo_actionPerformed} de la ! * classe {@link Simulator}. ! * @param e l'événement si on clique sur Start. */ public void actionPerformed(ActionEvent evt) { adaptee.boutongo_actionPerformed(evt); *************** *** 385,390 **** } ! /**<code> TableClients </code> ! * Classe qui permet de gerer la table du simulateur de PDA connectes au serveur */ class TableClients --- 418,424 ---- } ! /** ! * Classe qui permet de gérer la table du simulateur de PDA clients ! * connectés au serveur. */ class TableClients *************** *** 399,403 **** /** ! * Constructeur de la classe TableClients */ public TableClients() { --- 433,437 ---- /** ! * Constructeur de la classe TableClients. */ public TableClients() { *************** *** 409,414 **** /** * Insere un nouveau client dans la table. ! * @param clientID identité du client ! * @param quality niveau de qualité du client */ public void newClientRecord(int _clientID, int _quality) { --- 443,448 ---- /** * Insere un nouveau client dans la table. ! * @param _clientID identité du client. ! * @param _quality niveau de qualité du client. */ public void newClientRecord(int _clientID, int _quality) { *************** *** 419,425 **** /** ! * Obtient le rang, dans la table, d'un client ! * @param clientID numéro du client ! * @return int rang du client dans la table */ public int getRowForClient(int _clientID) { --- 453,459 ---- /** ! * Obtient le rang, dans la table, d'un client. ! * @param _clientID numéro du client. ! * @return rang du client dans la table. */ public int getRowForClient(int _clientID) { *************** *** 433,438 **** /** ! * Efface un client de la table ! * @param clientID identite du client */ public void removeClientRecord(int _clientID) { --- 467,472 ---- /** ! * Efface un client de la table. ! * @param clientID identité du client. */ public void removeClientRecord(int _clientID) { *************** *** 445,451 **** /** ! * Mise à jour de la table en mettant à jour le niveau de qualité pour le client demandé. ! * @param clientID le numero du client ! * @param qualitylevel le niveau de qualité */ public void updateClientRecord(int _clientID, int _qualityLevel) { --- 479,486 ---- /** ! * Mise à jour de la table en mettant à jour le niveau de ! * qualité pour le client demandé. ! * @param _clientID le numéro du client. ! * @param _qualitylevel le niveau de qualité. */ public void updateClientRecord(int _clientID, int _qualityLevel) { *************** *** 458,465 **** /** ! * Insere une valeur à un rang donné et une colonne donnee ! * @param value la valeur ! * @param row le rang ! * @param col la colonne */ public void setValue(Object value, int row, int col) { --- 493,501 ---- /** ! * Insère une valeur à un rang donné et une colonne ! * donnée. ! * @param value la valeur. ! * @param row le rang. ! * @param col la colonne. */ public void setValue(Object value, int row, int col) { *************** *** 468,472 **** /** ! * Lance l'affichage graphique */ public void setgraph(JPanel jp) { --- 504,509 ---- /** ! * Lance l'affichage graphique. ! * @param jp le {@link JPanel} correspondant. */ public void setgraph(JPanel jp) { *************** *** 478,488 **** setValueAt(_value, _row, _col); }*/ ! /**<code>MyTableModel</code> ! * Classe definissant le modèle de la table */ class MyTableModel extends DefaultTableModel { /** ! * Constructeur vide de la classe */ public MyTableModel() { --- 515,527 ---- setValueAt(_value, _row, _col); }*/ ! ! /** ! * Classe définissant le modèle de la table. */ class MyTableModel extends DefaultTableModel { + /** ! * Constructeur vide de la classe. */ public MyTableModel() { *************** *** 491,497 **** /** ! * Constructeur de la classe MyTableModel ! * @param data : les elements du tableau dynamique ! * @param columnNames le nom des colonnes */ public MyTableModel(Object[][] data, Object[] columnNames) { --- 530,536 ---- /** ! * Constructeur de la classe MyTableModel. ! * @param data les éléments du tableau dynamique. ! * @param columnNames le nom des colonnes. */ public MyTableModel(Object[][] data, Object[] columnNames) { *************** *** 499,512 **** } - /* - * JTable uses this method to determine the default renderer/ - * editor for each cell. If we didn't implement this method, - * then the last column would contain text ("true"/"false"), - * rather than a check box. - */ - /** ! * Obtient la classe de la colonne ! * @param c: numero de la colonne concernée */ public Class getColumnClass(int c) { --- 538,544 ---- } /** ! * Obtient la classe de la colonne. ! * @param c numéro de la colonne concernée. */ public Class getColumnClass(int c) { *************** *** 515,522 **** /** ! * Donne si la cellule est editable ! * @param row: numéro de la ligne de la cellule ! * @param column: numero de la colonne de la cellule ! * @return boolean */ public boolean isCellEditable(int row, int column) { --- 547,554 ---- /** ! * Dit si la cellule est éditable. C'est toujours impossible. ! * @param row numéro de la ligne de la cellule. ! * @param column numéro de la colonne de la cellule. ! * @return <code>false</code>. */ public boolean isCellEditable(int row, int column) { *************** *** 525,529 **** /** ! * Affiche les données telles qu'elles sont enregistrées */ private void printDebugData() { --- 557,561 ---- /** ! * Affiche les données telles qu'elles sont enregistrées. */ private void printDebugData() { Index: ThreadScript.java =================================================================== RCS file: /cvsroot/madsserv/madsserv/src/simulator/ThreadScript.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ThreadScript.java 21 Mar 2003 01:18:12 -0000 1.1 --- ThreadScript.java 23 Mar 2003 15:12:43 -0000 1.2 *************** *** 1,6 **** import java.io.*; import java.lang.*; ! public class ThreadScript extends Thread { --- 1,17 ---- + /** + * Projet Madsserv + * ThreadScript.java + * + * Module de simulation des changements de qualite. + * + * @author Emmanuel Vignon + */ + import java.io.*; import java.lang.*; ! /** ! * Thread de lecture du script de simulation à éxécuter. ! */ public class ThreadScript extends Thread { *************** *** 8,11 **** --- 19,28 ---- Simulator sim; + /** + * Constructeur de la classe. + * @param _sim référence du simulateur correspondant. + * @param _nomFichier le nom du fichier contenant le script à + * éxécuter. + */ ThreadScript(Simulator _sim, String _nomFichier) { nomFichier = _nomFichier; *************** *** 13,17 **** } ! public void run() { --- 30,36 ---- } ! /** ! * Lance le thread de lecture du script de simulation. ! */ public void run() { |
|
From: <car...@us...> - 2003-03-21 04:12:23
|
Update of /cvsroot/madsserv/madsserv/src/client In directory sc8-pr-cvs1:/tmp/cvs-serv11262 Removed Files: DialogSocket.java ThreadRead.java ThreadWrite.java Log Message: --- DialogSocket.java DELETED --- --- ThreadRead.java DELETED --- --- ThreadWrite.java DELETED --- |