You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

188 lines
5.3 KiB

import com.sun.istack.internal.NotNull;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.function.BooleanSupplier;
/**
* Created by itsmy_000 on 13.08.2016.
*/
public class socketInfo {
// public enum EVENT{PLAY,NEXT,REWIND,PAUSE,PREV,SCROB}
// public static ArrayList<EVENT> EVENTS;
public static ArrayList<BigDecimal> TIME, TRACKTIME;
public static ArrayList<String> PROTOCOL, EVENT, TRACKID;
public static ArrayList<Integer> ROLE, VKID, SOCKETID, PARTYID, DURATION;
public static ArrayList<Boolean> ONLINE, httpAuth, protocolAuth, AUTOPLAY;
public static ArrayList<client> CLIENT;
public static Integer sid;
public static void init(){
sid = 0;
VKID = new ArrayList<>();
TIME = new ArrayList<>();
TRACKTIME = new ArrayList<>();
ROLE = new ArrayList<>();
EVENT = new ArrayList<>();
CLIENT = new ArrayList<>();
PARTYID = new ArrayList<>();
TRACKID = new ArrayList<>();
PROTOCOL = new ArrayList<>();
DURATION = new ArrayList<>();
SOCKETID = new ArrayList<>();
ONLINE = new ArrayList<>();
httpAuth = new ArrayList<>();
protocolAuth = new ArrayList<>();
AUTOPLAY = new ArrayList<>();
}
public static void create(client c, Integer sid){
VKID.add(0);
TIME.add(BigDecimal.ZERO);
TRACKTIME.add(BigDecimal.ZERO);
ROLE.add(1);
EVENT.add("");
ONLINE.add(true);
CLIENT.add(c);
TRACKID.add("");
PROTOCOL.add("");
PARTYID.add(0);
DURATION.add(0);
SOCKETID.add(sid);
httpAuth.add(false);
protocolAuth.add(false);
AUTOPLAY.add(false);
}
public static void close(Integer sid){
int s = findSocket.bySID(sid);
VKID.remove(s);
ROLE.remove(s);
PROTOCOL.remove(s);
EVENT.remove(s);
TRACKID.remove(s);
SOCKETID.remove(s);
TIME.remove(s);
TRACKTIME.remove(s);
DURATION.remove(s);
PARTYID.remove(s);
CLIENT.remove(s);
ONLINE.remove(s);
httpAuth.remove(s);
protocolAuth.remove(s);
AUTOPLAY.remove(s);
}
public static Integer getNewID(){
sid++;
return sid;
}
public static class findSocket extends socketInfo{
public static Integer bySID(Integer s){
int id = -1;
for (int i = 0; i < SOCKETID.size(); i++) {
if(SOCKETID.get(i).equals(s)){
id = i;
}
}
return id;
}
public static ArrayList<Integer> byPID(Integer pid){
ArrayList<Integer> a = new ArrayList<>();
for (int i = 0; i < PARTYID.size(); i++) {
if(PARTYID.get(i).equals(pid)){
a.add(i);
}
}
return a;
}
}
public static void setHttpAuth(Integer sid, Boolean b){
int s = findSocket.bySID(sid);
if(s == -1) return;
httpAuth.set(s, b);
}
public static void checkProtocol(Integer sid){
int s = findSocket.bySID(sid);
if(s == -1) return;
if(PROTOCOL.get(s).equals("1A")){
protocolAuth.set(s, true);
}
}
public static Boolean isProtocolAuth(Integer sid){
int s = findSocket.bySID(sid);
if(s == -1) return Boolean.FALSE;
return protocolAuth.get(s);
}
public static Boolean isHttpAuth(Integer sid){
int s = findSocket.bySID(sid);
if(s == -1) return Boolean.FALSE;
return httpAuth.get(s);
}
public static Boolean isOnline(Integer sid){
int s = findSocket.bySID(sid);
if(s == -1) return Boolean.FALSE;
return ONLINE.get(s);
}
public static client getClient(Integer sid){
int s = findSocket.bySID(sid);
if(s == -1) return null;
return socketInfo.CLIENT.get(s);
}
public static void setString(Integer sid, String keyName, String value) {
int s = findSocket.bySID(sid);
if (s == -1) return;
switch (keyName) {
case "EVENT":
EVENT.set(s, value);
break;
case "tI":
TRACKID.set(s, value);
break;
case "protocol":
PROTOCOL.set(s, value);
break;
}
}
public static void setInteger(Integer sid, String keyName, BigDecimal value){
int s = findSocket.bySID(sid);
if(s == -1) return;
switch (keyName){
case "vk_id": VKID.set(s, value.intValueExact());
break;
case "tm": TIME.set(s, value);
break;
case "tT": TRACKTIME.set(s, value);
break;
case "partyId": PARTYID.set(s, value.intValueExact());
break;
case "tD": DURATION.set(s, value.intValueExact());
break;
}
}
public static void setBoolean(Integer sid, String keyName, Boolean value){
int s = findSocket.bySID(sid);
if(s == -1) return;
switch (keyName) {
case "aP":
AUTOPLAY.set(s, value.booleanValue());
break;
}
}
}