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
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;
|
|
}
|
|
|
|
}
|
|
}
|
|
|