/* * Copyright 2016 higherfrequencytrading.com * * 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 net.openhft.chronicle.network; import net.openhft.chronicle.network.api.session.SessionDetailsProvider; import net.openhft.chronicle.wire.WireType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.net.InetSocketAddress; import java.util.LinkedHashMap; import java.util.Map; import java.util.UUID; /** * Created by peter on 01/06/15. */ public class VanillaSessionDetails implements SessionDetailsProvider { private final Map<Class, Object> infoMap = new LinkedHashMap<>(); private String userId = ""; private String securityToken = ""; private String domain = ""; private SessionMode sessionMode = SessionMode.ACTIVE; private UUID clientId; // only set on a server not on a client private InetSocketAddress clientAddress; private long connectTimeMS; private UUID sessionId; @Nullable private WireType wireType; private byte hostId; public VanillaSessionDetails() { } @NotNull public static VanillaSessionDetails of(String userId, String securityToken, String domain) { @NotNull final VanillaSessionDetails vanillaSessionDetails = new VanillaSessionDetails(); vanillaSessionDetails.userId(userId); vanillaSessionDetails.securityToken(securityToken); vanillaSessionDetails.domain(domain); return vanillaSessionDetails; } /*** * used to uniquely identify the session */ @Override public UUID sessionId() { if (sessionId == null) sessionId = UUID.randomUUID(); return sessionId; } @Override public UUID clientId() { if (clientId == null) clientId = UUID.randomUUID(); return clientId; } @Override public String userId() { return userId; } @Override public String securityToken() { return securityToken; } @Override public String domain() { return this.domain; } @Override public SessionMode sessionMode() { return sessionMode; } @Override public void domain(String domain) { this.domain = domain; } @Override public void sessionMode(SessionMode sessionMode) { this.sessionMode = sessionMode; } @Override public void clientId(UUID clientId) { this.clientId = clientId; } @Override public void wireType(@Nullable WireType wireType) { this.wireType = wireType; } @Nullable @Override public WireType wireType() { return wireType; } public void hostId(byte hostId) { this.hostId = hostId; } @Override public byte hostId() { return this.hostId; } @Override public InetSocketAddress clientAddress() { return clientAddress; } @Override public long connectTimeMS() { return connectTimeMS; } @Override public <I> void set(Class<I> infoClass, I info) { infoMap.put(infoClass, info); } @NotNull @Override public <I> I get(Class<I> infoClass) { return (I) infoMap.get(infoClass); } @Override public void connectTimeMS(long connectTimeMS) { this.connectTimeMS = connectTimeMS; } @Override public void clientAddress(InetSocketAddress clientAddress) { this.clientAddress = clientAddress; } @Override public void securityToken(String securityToken) { this.securityToken = securityToken; } @Override public void userId(String userId) { this.userId = userId; } @NotNull @Override public String toString() { return "VanillaSessionDetails{" + "infoMap=" + infoMap + ", userId='" + userId + '\'' + ", securityToken='" + securityToken + '\'' + ", clientAddress=" + clientAddress + ", connectTimeMS=" + connectTimeMS + ", sessionId=" + sessionId + ", sessionMode=" + sessionMode + ", domain=" + domain + ", clientId=" + clientId + ", wiretype=" + wireType + ", hostId=" + hostId + '}'; } }