# HG changeset patch # User nikita@mapiproxy # Date 1251161663 -7200 # Node ID 62b942273625306a344a6b9b30cfa3715ce82f34 # Parent 91bf7d25696400418c73c21fd7109e8f65f80360 menage diff -r 91bf7d256964 -r 62b942273625 src/com/beem/project/beem/jingle/Caller.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 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(); - mediaManagers.add(new SenderMediaManager(new BasicTransportManager())); - JingleManager.setJingleServiceEnabled(); - jingleManager = new JingleManager(con, mediaManagers); - - } - -} diff -r 91bf7d256964 -r 62b942273625 src/com/beem/project/beem/jingle/FileSender.java --- 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; - } - -} diff -r 91bf7d256964 -r 62b942273625 src/com/beem/project/beem/jingle/Receiver.java --- 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 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(); - 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(); - } - } - -} diff -r 91bf7d256964 -r 62b942273625 src/com/beem/project/beem/jingle/ReceiverMediaManager.java --- 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 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 getPayloads() { - // TODO Auto-generated method stub - return payloads; - } - - private void setupPayloads() { - payloads = new ArrayList(); - payloads.add(new PayloadType.Audio(42, "Test")); - payloads.add(new PayloadType.Audio(69, "Test2")); - } -} diff -r 91bf7d256964 -r 62b942273625 src/com/beem/project/beem/jingle/SenderMediaManager.java --- 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 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 getPayloads() { - return payloads; - } - - private void setupPayloads() { - payloads = new ArrayList(); - payloads.add(new PayloadType.Audio(42, "Test")); - payloads.add(new PayloadType.Audio(15, "Speex")); - } -} diff -r 91bf7d256964 -r 62b942273625 src/com/beem/project/beem/jingle/SenderMediaSession.java --- 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; - } - -}