menage
authornikita@mapiproxy
Tue, 25 Aug 2009 02:54:23 +0200
changeset 354 62b942273625
parent 353 91bf7d256964
child 355 b11d01c264a3
menage
src/com/beem/project/beem/jingle/Caller.java
src/com/beem/project/beem/jingle/FileSender.java
src/com/beem/project/beem/jingle/Receiver.java
src/com/beem/project/beem/jingle/ReceiverMediaManager.java
src/com/beem/project/beem/jingle/SenderMediaManager.java
src/com/beem/project/beem/jingle/SenderMediaSession.java
--- a/src/com/beem/project/beem/jingle/Caller.java	Tue Aug 25 02:49:40 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,144 +0,0 @@
-package com.beem.project.beem.jingle;
-
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.jivesoftware.smack.ConnectionConfiguration;
-import org.jivesoftware.smack.XMPPConnection;
-import org.jivesoftware.smack.XMPPException;
-import org.jivesoftware.smackx.jingle.JingleManager;
-import org.jivesoftware.smackx.jingle.JingleSession;
-import org.jivesoftware.smackx.jingle.listeners.JingleSessionListener;
-import org.jivesoftware.smackx.jingle.media.JingleMediaManager;
-import org.jivesoftware.smackx.jingle.media.PayloadType;
-import org.jivesoftware.smackx.jingle.nat.BasicTransportManager;
-import org.jivesoftware.smackx.jingle.nat.TransportCandidate;
-
-/**
- * @author darisk
- */
-public class Caller {
-
-    /**
-     * @param args
-     *            Program args
-     * @throws InterruptedException
-     *             exception
-     */
-    public static void main(final String[] args) throws InterruptedException {
-	if (args.length < 3) {
-	    System.err.println("Not enough parameters");
-	    System.err.println("Usage : Caller user password server jidtocall");
-	}
-	Caller test = new Caller(args[0], args[1], args[2]);
-	test.call("test2@nikita-rack/TEST");
-	Thread.sleep(60000);
-    }
-
-    private XMPPConnection           con;
-    private String                   login;
-    private String                   password;
-    private JingleManager            jingleManager;
-    private List<JingleMediaManager> mediaManagers;
-
-    private JingleSession            out;
-
-    public Caller(final String login, final String pass, String server) {
-	if (server == null || server.equals(""))
-	    server = "localhost";
-	// XMPPConnection.DEBUG_ENABLED = true;
-	this.login = login;
-	this.password = pass;
-	ConnectionConfiguration conf = new ConnectionConfiguration(server);
-	conf.setRosterLoadedAtLogin(false);
-
-	con = new XMPPConnection(conf);
-	try {
-	    con.connect();
-	    con.login(this.login, this.password, "Caller");
-	    initialize();
-	} catch (XMPPException e) {
-	    // TODO Auto-generated catch block
-	    System.err.println("Echec de la connexion au serveru");
-	    e.printStackTrace();
-	}
-    }
-
-    public void call(final String destinataire) {
-	try {
-	    out = jingleManager.createOutgoingJingleSession(destinataire);
-	    // TODO configure out avec addMediaSession et addNegociator
-	    out.addListener(new JingleSessionListener() {
-
-		@Override
-		public void sessionClosed(final String reason, final JingleSession jingleSession) {
-		    System.out.println("Session " + jingleSession.getResponder() + "closed because " + reason);
-		}
-
-		@Override
-		public void sessionClosedOnError(final XMPPException e, final JingleSession jingleSession) {
-		    System.out.println("Session " + jingleSession.getResponder() + " closed on error");
-
-		}
-
-		@Override
-		public void sessionDeclined(final String reason, final JingleSession jingleSession) {
-		    System.out.println("Session " + jingleSession.getResponder() + "declined because " + reason);
-		}
-
-		@Override
-		public void sessionEstablished(final PayloadType pt, final TransportCandidate remoteCandidate,
-		        final TransportCandidate localCandidate, final JingleSession jingleSession) {
-		    System.out.println("Session established");
-		    // String name = localCandidate.getName();
-		    String ip = localCandidate.getIp();
-		    int port = localCandidate.getPort();
-		    System.out.println("Session established waiting connection on " + ip + ":" + port);
-		    try {
-			try {
-			    FileSender fs = new FileSender(ip, port, "/tmp/img.jpeg");
-			    fs.start();
-			    fs.join();
-			    System.out.println("End of transfer");
-			} finally {
-			    jingleSession.terminate();
-			}
-		    } catch (UnknownHostException e) {
-			System.err.println("Can't create server");
-		    } catch (InterruptedException e) {
-		    } catch (XMPPException e) {
-			System.err.println("Probably lost the connection");
-			e.printStackTrace();
-		    }
-		}
-
-		@Override
-		public void sessionMediaReceived(final JingleSession jingleSession, final String participant) {
-		    // TODO Auto-generated method stub
-		    System.out.println("Session Media received from " + participant);
-		}
-
-		@Override
-		public void sessionRedirected(final String redirection, final JingleSession jingleSession) {
-		    // TODO Auto-generated method stub
-		}
-	    });
-	    out.startOutgoing();
-
-	} catch (XMPPException e) {
-	    // TODO Auto-generated catch block
-	    e.printStackTrace();
-	}
-
-    }
-
-    private void initialize() {
-	mediaManagers = new ArrayList<JingleMediaManager>();
-	mediaManagers.add(new SenderMediaManager(new BasicTransportManager()));
-	JingleManager.setJingleServiceEnabled();
-	jingleManager = new JingleManager(con, mediaManagers);
-
-    }
-
-}
--- a/src/com/beem/project/beem/jingle/FileSender.java	Tue Aug 25 02:49:40 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-package com.beem.project.beem.jingle;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.UnknownHostException;
-
-public class FileSender extends Thread {
-
-    public static void main(String args[]) throws InterruptedException, UnknownHostException {
-	FileSender fs = new FileSender("127.0.0.1", 4242, "/tmp/img.jpeg");
-	fs.start();
-	fs.join();
-    }
-
-    private int         port;
-    private boolean     started = false;
-    private String      filename;
-
-    private InetAddress local_addr;
-
-    public FileSender(String listenAddr, int port, String file) throws UnknownHostException {
-	this.port = port;
-	this.filename = file;
-	this.local_addr = InetAddress.getByName(listenAddr);
-    }
-
-    @Override
-    public void run() {
-	try {
-	    ServerSocket ssock = new ServerSocket(port, 50, local_addr);
-	    InputStream in = new BufferedInputStream(new FileInputStream(filename));
-	    Socket sock = ssock.accept();
-	    OutputStream out = new BufferedOutputStream(sock.getOutputStream());
-
-	    try {
-		// peut etre se debarasser de started
-		started = true;
-		byte buf[] = new byte[1024];
-		int nbbytes = 1;
-		while (started) {
-		    nbbytes = in.read(buf, 0, 1024);
-		    if (nbbytes == -1)
-			break;
-		    out.write(buf, 0, nbbytes);
-		}
-		started = false;
-	    } finally {
-		if (in != null)
-		    in.close();
-		if (out != null)
-		    out.close();
-		if (sock != null)
-		    sock.close();
-		if (ssock != null)
-		    ssock.close();
-	    }
-	} catch (FileNotFoundException e) {
-	    System.err.println("Impossible d'ouvrir " + filename + " " + e.getLocalizedMessage());
-	} catch (IOException e) {
-	    System.err.println("I/O Error " + e.getLocalizedMessage());
-	}
-    }
-
-    public void setStarted() {
-	started = false;
-    }
-
-}
--- a/src/com/beem/project/beem/jingle/Receiver.java	Tue Aug 25 02:49:40 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-package com.beem.project.beem.jingle;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.Socket;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.jivesoftware.smack.ConnectionConfiguration;
-import org.jivesoftware.smack.XMPPConnection;
-import org.jivesoftware.smack.XMPPException;
-import org.jivesoftware.smackx.ServiceDiscoveryManager;
-import org.jivesoftware.smackx.jingle.JingleManager;
-import org.jivesoftware.smackx.jingle.JingleSession;
-import org.jivesoftware.smackx.jingle.JingleSessionRequest;
-import org.jivesoftware.smackx.jingle.listeners.JingleSessionListener;
-import org.jivesoftware.smackx.jingle.listeners.JingleSessionRequestListener;
-import org.jivesoftware.smackx.jingle.media.JingleMediaManager;
-import org.jivesoftware.smackx.jingle.media.PayloadType;
-import org.jivesoftware.smackx.jingle.nat.BasicTransportManager;
-import org.jivesoftware.smackx.jingle.nat.TransportCandidate;
-
-public class Receiver {
-
-    /**
-     * @param args
-     * @throws InterruptedException
-     * @throws InterruptedException
-     */
-    public static void main(String[] args) throws InterruptedException {
-	@SuppressWarnings("unused")
-	Receiver rec = new Receiver("test2", "test2");
-	System.out.println("Receiver initialized");
-
-	Thread.sleep(60000);
-
-    }
-
-    private XMPPConnection           con;
-    private JingleManager            jingleManager;
-    private List<JingleMediaManager> mediaManagers;
-
-    private JingleSession            in;
-
-    public Receiver(String username, String pass) {
-	// XMPPConnection.DEBUG_ENABLED = true;
-	ConnectionConfiguration conf = new ConnectionConfiguration("nikita-rack");
-	conf.setRosterLoadedAtLogin(false);
-	con = new XMPPConnection(conf);
-
-	try {
-
-	    con.connect();
-	    JingleManager.setJingleServiceEnabled();
-	    ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(con);
-	    // NOTE Classe gerant le service discovery (ce qui permet aux autres de savoir ce qu'on
-	    // sait faire)
-
-	    // Pour rajouter une liste de feature supporter (de format :
-	    // "http://jabber.org/protocol/disco#info")
-	    sdm.addFeature("http://jabber.org/protocol/disco#info");
-	    sdm.addFeature("TOTO");
-
-	    con.login(username, pass, "TEST-JAVA");
-	    initialize();
-	    // Le client demande les services dispo en face a son roster
-	    // il doit en suite fournir lui meme une liste de feature
-
-	    // DiscoverInfo di = sdm.discoverInfo("test@nikita-rack/pidgin");
-	    // DiscoverInfo di2 = sdm.discoverInfo("nikita@nikita-rack/Telepathy");
-
-	} catch (XMPPException e) {
-	    // TODO Auto-generated catch block
-	    e.printStackTrace();
-	}
-    }
-
-    private void initialize() {
-	BasicTransportManager bt = new BasicTransportManager();
-	mediaManagers = new ArrayList<JingleMediaManager>();
-	mediaManagers.add(new RTPMediaManager(bt));
-	mediaManagers.add(new SenderMediaManager(bt));
-
-	jingleManager = new JingleManager(con, mediaManagers);
-	jingleManager.addJingleSessionRequestListener(new JingleSessionRequestListener() {
-
-	    @Override
-	    public void sessionRequested(JingleSessionRequest request) {
-		System.out.println("Jingle Session request from " + request.getFrom());
-		try {
-		    in = request.accept();
-		    in.addListener(new JingleSessionListener() {
-
-			@Override
-			public void sessionClosed(String reason, JingleSession jingleSession) {
-			    System.out.println("Session " + jingleSession.getResponder() + "closedd because " + reason);
-			}
-
-			@Override
-			public void sessionClosedOnError(XMPPException e, JingleSession jingleSession) {
-			    // TODO Auto-generated method stub
-			    System.out.println("Session " + jingleSession.getResponder() + " closed");
-
-			}
-
-			@Override
-			public void sessionDeclined(String reason, JingleSession jingleSession) {
-			    // TODO Auto-generated method stub
-			    System.out
-				    .println("Session " + jingleSession.getResponder() + "declined because " + reason);
-			}
-
-			@Override
-			public void sessionEstablished(PayloadType pt, TransportCandidate remoteCandidate,
-			        TransportCandidate localCandidate, JingleSession jingleSession) {
-			    System.out.println("Session established");
-			    try {
-				System.out.println("Je recois sur " + remoteCandidate.getIp() + ":"
-				        + remoteCandidate.getPort());
-				receiveData(remoteCandidate.getIp(), remoteCandidate.getPort());
-			    } catch (IOException e) {
-				e.printStackTrace();
-			    }
-			}
-
-			@Override
-			public void sessionMediaReceived(JingleSession jingleSession, String participant) {
-			    System.out.println("Session Media received from " + participant);
-			}
-
-			@Override
-			public void sessionRedirected(String redirection, JingleSession jingleSession) {
-			}
-		    });
-		    in.startIncoming();
-		} catch (XMPPException e) {
-		    e.printStackTrace();
-		}
-	    }
-	});
-
-    }
-
-    private void receiveData(String ip, int port) throws IOException {
-	Socket s = null;
-	try {
-	    s = new Socket(ip, port);
-	    System.out.println("Waiting data");
-	    InputStream in = s.getInputStream();
-	    int a;
-	    while ((a = in.read()) != -1) {
-		System.out.println("Received " + a);
-	    }
-	    System.out.println("End receiving data");
-	} finally {
-	    if (s != null)
-		s.close();
-	}
-    }
-
-}
--- a/src/com/beem/project/beem/jingle/ReceiverMediaManager.java	Tue Aug 25 02:49:40 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-package com.beem.project.beem.jingle;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.jivesoftware.smackx.jingle.JingleSession;
-import org.jivesoftware.smackx.jingle.SmackLogger;
-import org.jivesoftware.smackx.jingle.media.JingleMediaManager;
-import org.jivesoftware.smackx.jingle.media.JingleMediaSession;
-import org.jivesoftware.smackx.jingle.media.PayloadType;
-import org.jivesoftware.smackx.jingle.mediaimpl.test.TestMediaSession;
-import org.jivesoftware.smackx.jingle.nat.JingleTransportManager;
-import org.jivesoftware.smackx.jingle.nat.TransportCandidate;
-
-public class ReceiverMediaManager extends JingleMediaManager {
-
-    private static final SmackLogger LOGGER     = SmackLogger.getLogger(ReceiverMediaManager.class);
-
-    public static final String       MEDIA_NAME = "69Test";
-
-    private List<PayloadType>        payloads;
-
-    public ReceiverMediaManager(JingleTransportManager transportManager) {
-	super(transportManager);
-	// TODO Auto-generated constructor stub
-	setupPayloads();
-	LOGGER.info("A TestMedia Manager is created");
-    }
-
-    @Override
-    public JingleMediaSession createMediaSession(PayloadType payloadType, TransportCandidate remote,
-	    TransportCandidate local, JingleSession jingleSession) {
-	// TODO Auto-generated method stub
-	return new TestMediaSession(payloadType, remote, local, null, jingleSession);
-    }
-
-    @Override
-    public String getName() {
-	return MEDIA_NAME;
-    }
-
-    @Override
-    public List<PayloadType> getPayloads() {
-	// TODO Auto-generated method stub
-	return payloads;
-    }
-
-    private void setupPayloads() {
-	payloads = new ArrayList<PayloadType>();
-	payloads.add(new PayloadType.Audio(42, "Test"));
-	payloads.add(new PayloadType.Audio(69, "Test2"));
-    }
-}
--- a/src/com/beem/project/beem/jingle/SenderMediaManager.java	Tue Aug 25 02:49:40 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-package com.beem.project.beem.jingle;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.jivesoftware.smackx.jingle.JingleSession;
-import org.jivesoftware.smackx.jingle.SmackLogger;
-import org.jivesoftware.smackx.jingle.media.JingleMediaManager;
-import org.jivesoftware.smackx.jingle.media.JingleMediaSession;
-import org.jivesoftware.smackx.jingle.media.PayloadType;
-import org.jivesoftware.smackx.jingle.nat.JingleTransportManager;
-import org.jivesoftware.smackx.jingle.nat.TransportCandidate;
-
-public class SenderMediaManager extends JingleMediaManager {
-
-    private static final SmackLogger LOGGER     = SmackLogger.getLogger(SenderMediaManager.class);
-
-    public static final String       MEDIA_NAME = "42Test";
-
-    private List<PayloadType>        payloads;
-
-    public SenderMediaManager(JingleTransportManager transportManager) {
-	super(transportManager);
-	// TODO Auto-generated constructor stub
-	setupPayloads();
-	LOGGER.info("A TestMedia Manager is created(Sender)");
-    }
-
-    @Override
-    public JingleMediaSession createMediaSession(PayloadType payloadType, TransportCandidate remote,
-	    TransportCandidate local, JingleSession jingleSession) {
-	// TODO Auto-generated method stub
-	return new RTPMediaSession(payloadType, remote, local, null, jingleSession);
-    }
-
-    @Override
-    public String getName() {
-	return MEDIA_NAME;
-    }
-
-    @Override
-    public List<PayloadType> getPayloads() {
-	return payloads;
-    }
-
-    private void setupPayloads() {
-	payloads = new ArrayList<PayloadType>();
-	payloads.add(new PayloadType.Audio(42, "Test"));
-	payloads.add(new PayloadType.Audio(15, "Speex"));
-    }
-}
--- a/src/com/beem/project/beem/jingle/SenderMediaSession.java	Tue Aug 25 02:49:40 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/**
- *
- */
-package com.beem.project.beem.jingle;
-
-import org.jivesoftware.smackx.jingle.JingleSession;
-import org.jivesoftware.smackx.jingle.SmackLogger;
-import org.jivesoftware.smackx.jingle.media.JingleMediaSession;
-import org.jivesoftware.smackx.jingle.media.PayloadType;
-import org.jivesoftware.smackx.jingle.nat.TransportCandidate;
-
-/**
- * @author darisk
- */
-public class SenderMediaSession extends JingleMediaSession {
-
-    private static final SmackLogger LOGGER  = SmackLogger.getLogger(SenderMediaSession.class);
-    @SuppressWarnings("unused")
-    private boolean                  active  = false;
-    @SuppressWarnings("unused")
-    private boolean                  started = false;
-    @SuppressWarnings("unused")
-    private FileSender               fileSender;
-
-    /**
-     * @param payloadType
-     * @param remote
-     * @param local
-     * @param mediaLocator
-     * @param jingleSession
-     */
-    public SenderMediaSession(PayloadType payloadType, TransportCandidate remote, TransportCandidate local,
-	    String mediaLocator, JingleSession jingleSession) {
-	super(payloadType, remote, local, mediaLocator, jingleSession);
-	initialize();
-	LOGGER.info("Demarrage d'une session avec local: " + local + " #remote: " + remote);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.jivesoftware.smackx.jingle.media.JingleMediaSession#initialize()
-     */
-    @Override
-    public void initialize() {
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.jivesoftware.smackx.jingle.media.JingleMediaSession#setTrasmit(boolean)
-     */
-    @Override
-    public void setTrasmit(boolean active) {
-	// TODO Auto-generated method stub
-	this.active = active;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.jivesoftware.smackx.jingle.media.JingleMediaSession#startReceive()
-     */
-    @Override
-    public void startReceive() {
-	// TODO Auto-generated method stub
-
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.jivesoftware.smackx.jingle.media.JingleMediaSession#startTrasmit()
-     */
-    @Override
-    public void startTrasmit() {
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.jivesoftware.smackx.jingle.media.JingleMediaSession#stopReceive()
-     */
-    @Override
-    public void stopReceive() {
-	// TODO Auto-generated method stub
-
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.jivesoftware.smackx.jingle.media.JingleMediaSession#stopTrasmit()
-     */
-    @Override
-    public void stopTrasmit() {
-	// TODO Auto-generated method stub
-	started = false;
-    }
-
-}