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