Skip to content

Commit

Permalink
Fixed a bug in the binary. RTSPResponder is now a thread
Browse files Browse the repository at this point in the history
  • Loading branch information
bencall committed May 5, 2011
1 parent 43c525f commit 35bd02d
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 36 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@
/.classpath
/bin/.DS_Store
/libs/.DS_Store
/src/.DS_Store
/src/.DS_Store
/.DS_Store
3 changes: 1 addition & 2 deletions src/AudioServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public class AudioServer implements UDPDelegate{

// Sockets
private DatagramSocket sock, csock;
private UDPListener l1, l2;
private UDPListener l1;

// client address
private InetAddress rtpClient;
Expand Down Expand Up @@ -92,7 +92,6 @@ private void initRTP(){
}

l1 = new UDPListener(sock, this);
//l2 = new UDPListener(csock, this);
}

/**
Expand Down
13 changes: 8 additions & 5 deletions src/LaunchThread.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,20 @@


/**
* Main class
* LaunchThread class which starts services
* @author bencall
*
*/

//
public class LaunchThread extends Thread{
private RTSPResponder repondeur;
private BonjourEmitter emetteur;
private String name;
ZeroConfEmitter emetteur1;

/**
* Constructor
* @param name
*/
public LaunchThread(String name){
super();
this.name = name;
Expand Down Expand Up @@ -48,7 +51,7 @@ public void run(){
// DNS Emitter (Bonjour)
repondeur = new RTSPResponder(port, hwAddr);
emetteur = new BonjourEmitter(name, sb.toString(), repondeur.getPort());
//emetteur1 = new ZeroConfEmitter(nameField.getText(), sb.toString(), repondeur.getPort());
//emetteur1 = new ZeroConfEmitter(name, sb.toString(), repondeur.getPort());
repondeur.start();


Expand All @@ -60,10 +63,10 @@ public void run(){

public synchronized void stopThread(){
emetteur.stop();
//emetteur1.stop();
try {
repondeur.stopThread();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Expand Down
57 changes: 33 additions & 24 deletions src/RTSPResponder.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketException;
import java.security.KeyPair;
import java.security.Security;
import java.util.regex.Matcher;
Expand Down Expand Up @@ -95,6 +96,7 @@ public int getPort(){
}

public void handlePacket(RTSPPacket packet){

// We init the response holder
StringBuilder response = new StringBuilder("RTSP/1.0 200 OK\r\n");
response.append("Audio-Jack-Status: connected; type=analog\r\n");
Expand Down Expand Up @@ -235,6 +237,9 @@ public void handlePacket(RTSPPacket packet){
// We close the response
response.append("\r\n");

System.out.println(packet.getRawPacket());
System.out.println(response.toString());

// Write the packet to the wire
BufferedWriter oStream;
try {
Expand Down Expand Up @@ -310,39 +315,43 @@ public byte[] decryptRSA(byte[] array){
*/
public void run() {
boolean fin = stopThread;
BufferedReader in;
try {

// Socket & Streams
// Socket init
if(socket == null){
if(socket == null && !stopThread){
socket = sock.accept();
}
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

String packet = "";
while(!fin){
// Buffer
char[] buffer = new char[4096];
in.read(buffer);
String temp = new String(buffer);
packet = packet + temp;

// If packet completed
Pattern p = Pattern.compile("(.*)\r\n\r\n");
Matcher m = p.matcher(packet);
if(m.find()){
//System.out.println(packet);
// We handle the packet
RTSPPacket paquet = new RTSPPacket(packet);
this.handlePacket(paquet);
packet = "";
break;
}
if(socket != null){
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

synchronized(this){
fin = stopThread;
String packet = "";
while(!fin){
// Buffer
char[] buffer = new char[4096];
in.read(buffer);
String temp = new String(buffer);
packet = packet + temp;

// If packet completed
Pattern p = Pattern.compile("(.*)\r\n\r\n");
Matcher m = p.matcher(packet);
if(m.find()){
//System.out.println(packet);
// We handle the packet
RTSPPacket paquet = new RTSPPacket(packet);
this.handlePacket(paquet);
packet = "";
break;
}

synchronized(this){
fin = stopThread;
}
}
in.close();
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
Expand Down
1 change: 0 additions & 1 deletion src/Window.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
Expand Down
10 changes: 7 additions & 3 deletions src/ZeroConfEmitter.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Hashtable;
import java.util.Map;

import javax.jmdns.JmDNS;
import javax.jmdns.JmmDNS;
Expand All @@ -22,7 +21,6 @@ public class ZeroConfEmitter{
private static JmmDNS dns;

public ZeroConfEmitter(String name, String identifier, int port) throws UnknownHostException, IOException, InterruptedException{

// Announce Raop Service
Hashtable<String, String> props = new Hashtable<String, String>();
props.put("txtvers", "1");
Expand All @@ -38,10 +36,16 @@ public ZeroConfEmitter(String name, String identifier, int port) throws UnknownH
props.put("cn", "0,1");
props.put("vn", "3");

ServiceInfo info = ServiceInfo.create("._raop._tcp", identifier+"@"+name, port, "dfjgjgghhfh");
//ServiceInfo info = ServiceInfo.create("._raop._tcp", identifier+"@"+name, port, "dfjgjgghhfh");
//info.setText(props);


// Announce Raop Service
ServiceInfo info = ServiceInfo.create(identifier+"@"+name + "._raop._tcp.local", identifier+"@"+name, port, "tp=UDP sm=false sv=false ek=1 et=0,1 cn=0,1 ch=2 ss=16 sr=44100 pw=false vn=3 txtvers=1");
info.setText(props);

dns = JmmDNS.Factory.getInstance();
((JmmDNSImpl)dns).inetAddressAdded(new NetworkTopologyEventImpl(JmDNS.create(InetAddress.getByName("localhost")), InetAddress.getByName("localhost")));

dns.registerService(info);
System.out.println("Service registered");
Expand Down

0 comments on commit 35bd02d

Please sign in to comment.