Changeset 476

Show
Ignore:
Timestamp:
07/23/07 22:43:26 (1 year ago)
Author:
blackhedd
Message:

datagram support

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • version_0/java/src/com/rubyeventmachine/Application.java

    r467 r476  
    3636import java.util.*; 
    3737import java.io.*; 
     38import java.net.*; 
    3839import java.net.SocketAddress; 
    3940 
     
    166167                } catch (IOException e) {} 
    167168        } 
     169         
     170        public void sendDatagram (String sig, ByteBuffer bb, InetSocketAddress target) { 
     171                reactor.sendDatagram(sig, bb, target.getHostName(), target.getPort()); 
     172        } 
     173         
    168174        public void closeConnection (String sig, boolean afterWriting) { 
    169175                try { 
     
    171177                } catch (ClosedChannelException e) {} 
    172178        } 
     179         
     180        public void openDatagramSocket (Connection c) { 
     181                openDatagramSocket (new InetSocketAddress ("0.0.0.0", 0), c); 
     182        } 
     183        public void openDatagramSocket (InetSocketAddress addr, Connection c) { 
     184                try { 
     185                        String s = reactor.openUdpSocket(addr); 
     186                        c.application = this; 
     187                        c.signature = s; 
     188                        reactor.connections.put(s, c); 
     189                        c.postInit(); 
     190                } catch (ClosedChannelException e) { 
     191                } catch (IOException e) { 
     192                        System.out.println ("Bad Datagram socket "+e+" "+addr); 
     193                        /* TODO, can't catch this here, because it can happen on a bad address */ 
     194                } 
     195        } 
    173196} 
  • version_0/java/src/com/rubyeventmachine/Connection.java

    r467 r476  
    3333//import java.io.*; 
    3434import java.nio.*; 
     35import java.net.*; 
    3536//import java.nio.channels.*; 
    3637 
     
    6768                application.closeConnection(signature, true); 
    6869        } 
     70         
     71        public void sendDatagram (ByteBuffer bb, InetSocketAddress addr) { 
     72                application.sendDatagram (signature, bb, addr); 
     73        } 
    6974} 
  • version_0/java/src/com/rubyeventmachine/EmReactor.java

    r464 r476  
    285285         
    286286 
     287        public String openUdpSocket (String address, int port) throws IOException { 
     288                return openUdpSocket (new InetSocketAddress (address, port)); 
     289        } 
    287290        /** 
    288291         *  
     
    292295         * @throws IOException 
    293296         */ 
    294         public String openUdpSocket (String address, int port) throws IOException { 
     297        public String openUdpSocket (InetSocketAddress address) throws IOException { 
     298                // TODO, don't throw an exception out of here. 
    295299                DatagramChannel dg = DatagramChannel.open(); 
    296300                dg.configureBlocking(false); 
    297                 dg.socket().bind( new InetSocketAddress(address,port)); 
     301                dg.socket().bind(address); 
    298302                String b = createBinding(); 
    299303                EventableChannel ec = new EventableDatagramChannel (dg, b, mySelector);