/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.List;
import org.glassfish.grizzly.filterchain.BaseFilter;
import org.glassfish.grizzly.filterchain.FilterChain;
import org.glassfish.grizzly.filterchain.FilterChainBuilder;
import org.glassfish.grizzly.filterchain.FilterChainContext;
import org.glassfish.grizzly.filterchain.NextAction;
import org.glassfish.grizzly.filterchain.TransportFilter;
import org.glassfish.grizzly.nio.transport.TCPNIOTransport;
import org.glassfish.grizzly.nio.transport.TCPNIOTransportBuilder;

/**
 *
 * @author oleksiys
 */
public class MSServer {
    public static void main(String[] args) throws IOException {
        FilterChain fc = FilterChainBuilder.stateless()
                .add(new TransportFilter())
                .add(new MultiStringFilter(StandardCharsets.UTF_8, "\n"))
                .add(new BaseFilter() {

                    @Override
                    public NextAction handleRead(FilterChainContext ctx) throws IOException {
                        final List<String> stringList = ctx.getMessage();
                        System.out.println("client sent: " + stringList);
                        
                        ctx.write(stringList);
                        
                        return ctx.getStopAction();
                    }

                }).build();
        
        TCPNIOTransport transport = TCPNIOTransportBuilder
                .newInstance()
                .setProcessor(fc)
                .build();
        
        transport.bind(7777);
        
        try {
            transport.start();
            System.out.println("Press enter to stop");
            System.in.read();
        } finally {
            transport.shutdownNow();
        }
    }
}