// Path: siden-core/src/main/java/ninja/siden/Connection.java
// public interface Connection extends AttributeContainer {
// 
// 	// endpoint methods
// 
// 	CompletableFuture<Void> send(String text);
// 
// 	CompletableFuture<Void> send(ByteBuffer payload);
// 
// 	CompletableFuture<Void> ping(ByteBuffer payload);
// 
// 	CompletableFuture<Void> pong(ByteBuffer payload);
// 
// 	CompletableFuture<Void> close();
// 
// 	CompletableFuture<Void> close(int code, String reason);
// 
// 	void sendStream(ExceptionalConsumer<OutputStream, Exception> fn);
// 
// 	void sendWriter(ExceptionalConsumer<Writer, Exception> fn);
// 
// 	// informations
// 
// 	String protocolVersion();
// 
// 	String subProtocol();
// 
// 	boolean secure();
// 
// 	boolean open();
// 
// 	Set<Connection> peers();
// 
// 	// from request
// 
// 	Optional<String> params(String key);
// 
// 	Map<String, String> params();
// 
// 	Optional<String> query(String key);
// 
// 	Optional<String> header(String name);
// 
// 	List<String> headers(String name);
// 
// 	Map<String, List<String>> headers();
// 
// 	Map<String, Cookie> cookies();
// 
// 	Optional<Cookie> cookie(String name);
// 
// 	/**
// 	 * get current session
// 	 * 
// 	 * @return session or empty
// 	 */
// 	Optional<Session> current();
// 
// 	WebSocketChannel raw();
// 
// }
// 
// Path: siden-core/src/main/java/ninja/siden/WebSocket.java
// public interface WebSocket {
// 
// 	default void onConnect(Connection connection) throws Exception {
// 	}
// 
// 	default void onText(String payload) throws Exception {
// 	}
// 
// 	default void onBinary(ByteBuffer[] payload) throws Exception {
// 	}
// 
// 	default void onPong(ByteBuffer[] payload) throws Exception {
// 	}
// 
// 	default void onPing(ByteBuffer[] payload) throws Exception {
// 	}
// 
// 	default void onClose(ByteBuffer[] payload) throws Exception {
// 	}
// }
// 
// Path: siden-core/src/main/java/ninja/siden/WebSocketCustomizer.java
// public interface WebSocketCustomizer {
// 
// 	WebSocketCustomizer onConnect(ExceptionalConsumer<Connection, Exception> fn);
// 
// 	WebSocketCustomizer onText(
// 			ExceptionalBiConsumer<Connection, String, Exception> fn);
// 
// 	WebSocketCustomizer onBinary(
// 			ExceptionalBiConsumer<Connection, ByteBuffer[], Exception> fn);
// 
// 	WebSocketCustomizer onPong(
// 			ExceptionalBiConsumer<Connection, ByteBuffer[], Exception> fn);
// 
// 	WebSocketCustomizer onPing(
// 			ExceptionalBiConsumer<Connection, ByteBuffer[], Exception> fn);
// 
// 	WebSocketCustomizer onClose(
// 			ExceptionalBiConsumer<Connection, ByteBuffer[], Exception> fn);
// }
// 
// Path: siden-core/src/main/java/ninja/siden/WebSocketFactory.java
// public interface WebSocketFactory {
// 
// 	WebSocket create(Connection connection);
// }
// 
// Path: siden-core/src/main/java/ninja/siden/util/ExceptionalBiConsumer.java
// @FunctionalInterface
// public interface ExceptionalBiConsumer<T, U, EX extends Exception> {
// 
// 	void accept(T t, U u) throws EX;
// }
// 
// Path: siden-core/src/main/java/ninja/siden/util/ExceptionalConsumer.java
// @FunctionalInterface
// public interface ExceptionalConsumer<T, EX extends Exception> {
// 
// 	void accept(T t) throws EX;
// }


import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
import ninja.siden.Connection;
import ninja.siden.WebSocket;
import ninja.siden.WebSocketCustomizer;
import ninja.siden.WebSocketFactory;
import ninja.siden.util.ExceptionalBiConsumer;
import ninja.siden.util.ExceptionalConsumer;
/*
 * Copyright 2014 SATO taichi
 *
 * 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 ninja.siden.internal;



/**
 * @author taichi
 */
public class LambdaWebSocketFactory implements WebSocketFactory,
		WebSocketCustomizer {

	List<ExceptionalConsumer<Connection, Exception>> conn = new ArrayList<>();
// Path: siden-core/src/main/java/ninja/siden/Connection.java
// public interface Connection extends AttributeContainer {
// 
// 	// endpoint methods
// 
// 	CompletableFuture<Void> send(String text);
// 
// 	CompletableFuture<Void> send(ByteBuffer payload);
// 
// 	CompletableFuture<Void> ping(ByteBuffer payload);
// 
// 	CompletableFuture<Void> pong(ByteBuffer payload);
// 
// 	CompletableFuture<Void> close();
// 
// 	CompletableFuture<Void> close(int code, String reason);
// 
// 	void sendStream(ExceptionalConsumer<OutputStream, Exception> fn);
// 
// 	void sendWriter(ExceptionalConsumer<Writer, Exception> fn);
// 
// 	// informations
// 
// 	String protocolVersion();
// 
// 	String subProtocol();
// 
// 	boolean secure();
// 
// 	boolean open();
// 
// 	Set<Connection> peers();
// 
// 	// from request
// 
// 	Optional<String> params(String key);
// 
// 	Map<String, String> params();
// 
// 	Optional<String> query(String key);
// 
// 	Optional<String> header(String name);
// 
// 	List<String> headers(String name);
// 
// 	Map<String, List<String>> headers();
// 
// 	Map<String, Cookie> cookies();
// 
// 	Optional<Cookie> cookie(String name);
// 
// 	/**
// 	 * get current session
// 	 * 
// 	 * @return session or empty
// 	 */
// 	Optional<Session> current();
// 
// 	WebSocketChannel raw();
// 
// }
// 
// Path: siden-core/src/main/java/ninja/siden/WebSocket.java
// public interface WebSocket {
// 
// 	default void onConnect(Connection connection) throws Exception {
// 	}
// 
// 	default void onText(String payload) throws Exception {
// 	}
// 
// 	default void onBinary(ByteBuffer[] payload) throws Exception {
// 	}
// 
// 	default void onPong(ByteBuffer[] payload) throws Exception {
// 	}
// 
// 	default void onPing(ByteBuffer[] payload) throws Exception {
// 	}
// 
// 	default void onClose(ByteBuffer[] payload) throws Exception {
// 	}
// }
// 
// Path: siden-core/src/main/java/ninja/siden/WebSocketCustomizer.java
// public interface WebSocketCustomizer {
// 
// 	WebSocketCustomizer onConnect(ExceptionalConsumer<Connection, Exception> fn);
// 
// 	WebSocketCustomizer onText(
// 			ExceptionalBiConsumer<Connection, String, Exception> fn);
// 
// 	WebSocketCustomizer onBinary(
// 			ExceptionalBiConsumer<Connection, ByteBuffer[], Exception> fn);
// 
// 	WebSocketCustomizer onPong(
// 			ExceptionalBiConsumer<Connection, ByteBuffer[], Exception> fn);
// 
// 	WebSocketCustomizer onPing(
// 			ExceptionalBiConsumer<Connection, ByteBuffer[], Exception> fn);
// 
// 	WebSocketCustomizer onClose(
// 			ExceptionalBiConsumer<Connection, ByteBuffer[], Exception> fn);
// }
// 
// Path: siden-core/src/main/java/ninja/siden/WebSocketFactory.java
// public interface WebSocketFactory {
// 
// 	WebSocket create(Connection connection);
// }
// 
// Path: siden-core/src/main/java/ninja/siden/util/ExceptionalBiConsumer.java
// @FunctionalInterface
// public interface ExceptionalBiConsumer<T, U, EX extends Exception> {
// 
// 	void accept(T t, U u) throws EX;
// }
// 
// Path: siden-core/src/main/java/ninja/siden/util/ExceptionalConsumer.java
// @FunctionalInterface
// public interface ExceptionalConsumer<T, EX extends Exception> {
// 
// 	void accept(T t) throws EX;
// }


// Path: siden-core/src/main/java/ninja/siden/internal/LambdaWebSocketFactory.java
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
import ninja.siden.Connection;
import ninja.siden.WebSocket;
import ninja.siden.WebSocketCustomizer;
import ninja.siden.WebSocketFactory;
import ninja.siden.util.ExceptionalBiConsumer;
import ninja.siden.util.ExceptionalConsumer;

/*
 * Copyright 2014 SATO taichi
 *
 * 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 ninja.siden.internal;



/**
 * @author taichi
 */
public class LambdaWebSocketFactory implements WebSocketFactory,
		WebSocketCustomizer {

	List<ExceptionalConsumer<Connection, Exception>> conn = new ArrayList<>();
	List<ExceptionalBiConsumer<Connection, String, Exception>> txt = new ArrayList<>();