/**
* Copyright 2015 Santhosh Kumar Tekuri
*
* The JLibs authors license this file to you 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 jlibs.wamp4j;
import jlibs.wamp4j.error.UnexpectedException;
import jlibs.wamp4j.error.UnsupportedSerializationException;
import jlibs.wamp4j.error.WAMPException;
import jlibs.wamp4j.spi.WAMPSocket;
import java.util.Map;
/**
* @author Santhosh Kumar Tekuri
*/
public class Util{
public static <T> T nonNull(T obj, String message){
if(obj==null)
throw new NullPointerException(message);
return obj;
}
public static long generateID(Map<Long, ?> map, long lastUsed){
for (;;) {
++lastUsed;
if(lastUsed>9007199254740992L) // 2^53
lastUsed = 0L;
if(!map.containsKey(lastUsed))
return lastUsed;
}
}
public static String[] subProtocols(WAMPSerialization... serializations){
String subProtocols[] = new String[serializations.length];
for(int i=0; i<serializations.length; i++)
subProtocols[i] = serializations[i].protocol();
return subProtocols;
}
public static WAMPSerialization serialization(WAMPSocket socket, WAMPSerialization... serializations) throws UnsupportedSerializationException{
for(WAMPSerialization serialization : serializations){
if(serialization.protocol().equals(socket.subProtocol())){
return serialization;
}
}
throw new UnsupportedSerializationException(socket.subProtocol());
}
public static String toString(String... subProtocols){
StringBuilder builder = new StringBuilder();
for(String subProtocol : subProtocols){
if(builder.length()>0)
builder.append(',');
builder.append(subProtocol);
}
return builder.toString();
}
}