/**
 * 
 * Copyright 2004 Hiram Chirino
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * you may not use this file except in compliance with the License. 
 * You may obtain a copy of the License at 
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 * See the License for the specific language governing permissions and 
 * limitations under the License. 
 * 
 **/
package org.activeio.oneport;

import java.io.IOException;
import java.net.ServerSocket;

import org.activeio.SynchChannelServer;
import org.activeio.adapter.AsynchToSynchChannelServerAdapter;
import org.activeio.adapter.SynchChannelServerToServerSocketAdapter;
import org.mortbay.http.SocketListener;
import org.mortbay.util.InetAddrPort;

/**
 *
 */
public class JettyOnePortSocketListener extends SocketListener {

    private static final long serialVersionUID = 3257567321504561206L;
    
    private final OnePortAsynchChannelServer channelServer;

    public JettyOnePortSocketListener(OnePortAsynchChannelServer channelServer) {
        this.channelServer = channelServer;
    }

    public JettyOnePortSocketListener(OnePortAsynchChannelServer channelServer, InetAddrPort arg0) {
        super(arg0);
        this.channelServer = channelServer;
    }
    
    protected ServerSocket newServerSocket(InetAddrPort addrPort, int backlog) throws IOException {
       SynchChannelServer syncServer = AsynchToSynchChannelServerAdapter.adapt(channelServer.bindAsynchChannel(HttpRecognizer.HTTP_RECOGNIZER));
       syncServer.start();
       return new SynchChannelServerToServerSocketAdapter(syncServer);
    }
}
