Changeset 258:0d701d87f3f4

Show
Ignore:
Timestamp:
04/27/2010 10:50:35 AM (4 months ago)
Author:
dcaoyuan
Branch:
default
Message:

close serverChannel when stop it

Location:
blogbird/src/main/scala/org/aiotrade/httpd
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • blogbird/src/main/scala/org/aiotrade/httpd/HttpdActors.scala

    r255 r258  
    2121 
    2222  def stop { 
    23     connectionSelector.done = true 
     23    connectionSelector.stop 
    2424  } 
    2525 
    2626  private object connectionSelector extends Actor { 
    27     var done = false 
     27    val serverChannel = ServerSocketChannel.open 
     28    serverChannel.socket.bind(new InetSocketAddress(localAddress, port)) 
     29 
     30    def stop = { 
     31      serverChannel.close 
     32    } 
    2833     
    2934    /** 
    30      * Opens the port and loops forever, emitting newly connected sockets. 
     35     * loops forever, emitting newly connected sockets. 
    3136     */ 
    3237    def act { 
    33       val serverChannel = ServerSocketChannel.open 
    34       serverChannel.socket.bind(new InetSocketAddress(localAddress, port)) 
    3538      serverChannel.configureBlocking(true) 
    36  
    37       while (!done) { 
     39      while (serverChannel.isOpen) { 
    3840        val clientChannel = serverChannel.accept 
    3941        if (clientChannel != null) { 
  • blogbird/src/main/scala/org/aiotrade/httpd/coroutine/HttpdRoutines.scala

    r255 r258  
    8181 */ 
    8282class PortListener(localAddress: InetAddress, port: Int) extends Producer[SocketChannel] { 
    83   private var done = false 
    84  
    85   def stop { 
    86     done = true 
    87   } 
    88  
     83  val serverChannel = ServerSocketChannel.open 
     84  serverChannel.socket.bind(new InetSocketAddress(localAddress, port)) 
     85 
     86  def stop { 
     87    serverChannel.close 
     88  } 
    8989 
    9090  private object connectionSelector extends Actor { 
     
    9494     */ 
    9595    def act { 
    96       val serverChannel = ServerSocketChannel.open 
    97       serverChannel.socket.bind(new InetSocketAddress(localAddress, port)) 
    9896      serverChannel.configureBlocking(true) 
    99  
    100       while (!done) { 
     97      while (serverChannel.isOpen) { 
    10198        val clientChannel = serverChannel.accept 
    10299        if (clientChannel != null) {