|
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 ----
|