Second version of JMX

This commit is contained in:
Willem 2022-02-06 15:49:32 +01:00
parent a69315adc0
commit a3f58468f5
32 changed files with 272 additions and 107 deletions

View file

@ -19,7 +19,7 @@ public interface BãßBȍőnCoffinOpenʸᴰ<T extends BãßBȍőnCoffinStoreKey
PUT_OBJ(key, new HashMap<>()); PUT_OBJ(key, new HashMap<>());
} }
default void INIT_BOON(Object boon) { default void BOON_INIT(Object boon) {
try { try {
for (Method m:boon.getClass().getMethods()) { for (Method m:boon.getClass().getMethods()) {
if (m.isAnnotationPresent(BãßBȍőnInitMethodʸᴰ.class)) { if (m.isAnnotationPresent(BãßBȍőnInitMethodʸᴰ.class)) {

View file

@ -1,10 +0,0 @@
package love.distributedrebirth.bassboonyd;
/**
* Only use when no other keys are needed on instance enum.
*/
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
public enum BãßBȍőnEnumJmxKeyʸᴰ implements BãßBȍőnCoffinStoreKeyʸᴰ {
JMX,
;
}

View file

@ -2,7 +2,7 @@ package love.distributedrebirth.bassboonyd;
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") @BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotationInfoʸᴰ(required = {BãßBȍőnClassInfoʸᴰ.class, BãßBȍőnAuthorInfoʸᴰ.class}) @BãßBȍőnAnnotationInfoʸᴰ(required = {BãßBȍőnClassInfoʸᴰ.class, BãßBȍőnAuthorInfoʸᴰ.class})
public interface BãßBȍőnEnumʸᴰ<T> { public interface BãßBȍőnEnumʸᴰ<T> extends DefaultAuthorInfoʸᴰ,DefaultClassInfoʸᴰ,DefaultPackageInfoʸᴰ {
String name(); String name();
@ -23,21 +23,6 @@ public interface BãßBȍőnEnumʸᴰ<T> {
} }
} }
default String BãßClassNaam() {
return getClass().getAnnotation(BãßBȍőnClassInfoʸᴰ.class).name();
}
default String BãßClassPurpose() {
return getClass().getAnnotation(BãßBȍőnClassInfoʸᴰ.class).purpose();
}
default String BãßAuthorNaam() {
return getClass().getAnnotation(BãßBȍőnAuthorInfoʸᴰ.class).name();
}
default String BãßAuthorCopyright() {
return getClass().getAnnotation(BãßBȍőnAuthorInfoʸᴰ.class).copyright();
}
default String BȍőnNaamI18N() { default String BȍőnNaamI18N() {
return BãßClassNaam() + BãßBȍőnConstantsʸᴰ.STR_DOT + name(); return BãßClassNaam() + BãßBȍőnConstantsʸᴰ.STR_DOT + name();

View file

@ -0,0 +1,14 @@
package love.distributedrebirth.bassboonyd;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface BãßBȍőnPackageInfoʸᴰ {
String name();
}

View file

@ -0,0 +1,14 @@
package love.distributedrebirth.bassboonyd;
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotationInfoʸᴰ(required = {BãßBȍőnAuthorInfoʸᴰ.class})
public interface DefaultAuthorInfoʸᴰ {
default String BãßAuthorNaam() {
return getClass().getAnnotation(BãßBȍőnAuthorInfoʸᴰ.class).name();
}
default String BãßAuthorCopyright() {
return getClass().getAnnotation(BãßBȍőnAuthorInfoʸᴰ.class).copyright();
}
}

View file

@ -0,0 +1,14 @@
package love.distributedrebirth.bassboonyd;
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotationInfoʸᴰ(required = {BãßBȍőnClassInfoʸᴰ.class})
public interface DefaultClassInfoʸᴰ {
default String BãßClassNaam() {
return getClass().getAnnotation(BãßBȍőnClassInfoʸᴰ.class).name();
}
default String BãßClassPurpose() {
return getClass().getAnnotation(BãßBȍőnClassInfoʸᴰ.class).purpose();
}
}

View file

@ -0,0 +1,10 @@
package love.distributedrebirth.bassboonyd;
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotationInfoʸᴰ(required = {BãßBȍőnPackageInfoʸᴰ.class})
public interface DefaultPackageInfoʸᴰ {
default String BãßPackageNaam() {
return getClass().getAnnotation(BãßBȍőnPackageInfoʸᴰ.class).name();
}
}

View file

@ -0,0 +1,24 @@
package love.distributedrebirth.bassboonyd.jmx;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
abstract public class AbstractMBeanAttributeᴶᴹˣ implements MBeanAttributeᴶᴹˣ {
private final String name;
private final String description;
public AbstractMBeanAttributeᴶᴹˣ(String name, String description) {
this.name = name;
this.description = description;
}
@Override
public String getName() {
return name;
}
@Override
public String getDescription() {
return description;
}
}

View file

@ -0,0 +1,25 @@
package love.distributedrebirth.bassboonyd.jmx;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnMBeanAttributeTypeʸᴰ(Boolean.class)
public class BooleanAttributeᴶᴹˣ extends AbstractMBeanAttributeᴶᴹˣ {
private Boolean value;
public BooleanAttributeᴶᴹˣ(String name, String description) {
super(name, description);
}
public void setValueBoolean(Boolean value) {
this.value = value;
}
public Boolean getValueBoolean() {
return value;
}
public Object getValue() {
return value;
}
}

View file

@ -1,4 +1,4 @@
package love.distributedrebirth.bassboonyd; package love.distributedrebirth.bassboonyd.jmx;
import java.lang.management.ManagementFactory; import java.lang.management.ManagementFactory;
import java.util.List; import java.util.List;
@ -18,58 +18,51 @@ import javax.management.MBeanServer;
import javax.management.ObjectName; import javax.management.ObjectName;
import javax.management.ReflectionException; import javax.management.ReflectionException;
import love.distributedrebirth.bassboonyd.BãßBȍőnAnnotationInfoʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnClassInfoʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinOpenʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinStoreKeyʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinStoreʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnEnumʸᴰ;
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") @BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnAnnotationInfoʸᴰ(required = {BãßBȍőnClassInfoʸᴰ.class, BãßBȍőnAuthorInfoʸᴰ.class}) @BãßBȍőnAnnotationInfoʸᴰ(required = {BãßBȍőnClassInfoʸᴰ.class, BãßBȍőnAuthorInfoʸᴰ.class})
public interface BãßBȍőnEnumJmxʸᴰ<T,K extends BãßBȍőnCoffinStoreKeyʸᴰ> extends BãßBȍőnEnumʸᴰ<T>,BãßBȍőnCoffinStoreʸᴰ<K> { public interface BãßBȍőnEnumJmxʸᴰ<T,K extends BãßBȍőnCoffinStoreKeyʸᴰ> extends BãßBȍőnEnumʸᴰ<T>,BãßBȍőnCoffinStoreʸᴰ<K> {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
default void initJmx(K key) { default void BȍőnJmxInit(K key) {
BãßBȍőnCoffinOpenʸᴰ<K> coffin = BãßBȍőnCoffinOpenʸᴰ.class.cast(GET_BBC()); BãßBȍőnCoffinOpenʸᴰ<K> coffin = BãßBȍőnCoffinOpenʸᴰ.class.cast(GET_BBC());
coffin.PUT_MAP(key); coffin.PUT_MAP(key);
try { try {
MBeanServer server = ManagementFactory.getPlatformMBeanServer(); MBeanServer server = ManagementFactory.getPlatformMBeanServer();
ObjectName objectName1 = new ObjectName(BȍőnNaamI18N() + ":name=counters"); ObjectName objectName1 = new ObjectName(BãßPackageNaam() + ":name=" + BãßClassNaam());
server.registerMBean(new GuageDynamicMBean(GET_BBC().GET_MAP_OBJ(key)), objectName1); server.registerMBean(new GuageDynamicMBean(GET_BBC().GET_MAP_OBJ(key)), objectName1);
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
default GuageCounter BȍőnInitGuage(K key, String name) { default GuageCounterᴶᴹˣ BȍőnJmxInitGuageCounter(K key, String name) {
return BȍőnInitGuage(key,name,""); return BȍőnJmxInitGuageCounter(key,name,"");
} }
default GuageCounter BȍőnInitGuage(K key, String name, String description) { default GuageCounterᴶᴹˣ BȍőnJmxInitGuageCounter(K key, String name, String description) {
GuageCounter result = new GuageCounter(name, description); GuageCounterᴶᴹˣ result = new GuageCounterᴶᴹˣ(name, description);
GET_BBC().GET_MAP_OBJ(key).put(name, result); GET_BBC().GET_MAP_OBJ(key).put(name, result);
return result; return result;
} }
public class GuageCounter { default StringAttributeᴶᴹˣ BȍőnJmxInitStringAttribute(K key, String name, String description) {
private volatile long counter; StringAttributeᴶᴹˣ result = new StringAttributeᴶᴹˣ(name, description);
private final String name; GET_BBC().GET_MAP_OBJ(key).put(name, result);
private final String description; return result;
}
public GuageCounter(String name, String description) {
this.name = name; default BooleanAttributeᴶᴹˣ BȍőnJmxInitBooleanAttribute(K key, String name, String description) {
this.description = description; BooleanAttributeᴶᴹˣ result = new BooleanAttributeᴶᴹˣ(name, description);
} GET_BBC().GET_MAP_OBJ(key).put(name, result);
return result;
public void increment() {
counter++;
}
public long getCounter() {
return counter;
}
public String getName() {
return name;
}
public String getDescription() {
return description;
}
} }
class GuageDynamicMBean implements DynamicMBean { class GuageDynamicMBean implements DynamicMBean {
@ -86,8 +79,8 @@ public interface BãßBȍőnEnumJmxʸᴰ<T,K extends BãßBȍőnCoffinStoreKeyʸ
List<String> keySet = guages.keySet().stream().collect(Collectors.toList()); List<String> keySet = guages.keySet().stream().collect(Collectors.toList());
for (int i = 0; i < dAttributes.length; i++) { for (int i = 0; i < dAttributes.length; i++) {
String name = keySet.get(i); String name = keySet.get(i);
GuageCounter gc = GuageCounter.class.cast(guages.get(name)); MBeanAttributeᴶᴹˣ gc = MBeanAttributeᴶᴹˣ.class.cast(guages.get(name));
dAttributes[i] = new MBeanAttributeInfo(gc.getName(), Long.class.getSimpleName(), dAttributes[i] = new MBeanAttributeInfo(gc.getName(), gc.BãßValueType().getSimpleName(),
gc.getDescription(), true, false, false); gc.getDescription(), true, false, false);
} }
return new MBeanInfo(this.getClass().getName(), null, dAttributes, null, null, return new MBeanInfo(this.getClass().getName(), null, dAttributes, null, null,
@ -96,8 +89,8 @@ public interface BãßBȍőnEnumJmxʸᴰ<T,K extends BãßBȍőnCoffinStoreKeyʸ
@Override @Override
public Object getAttribute(String name) throws AttributeNotFoundException, MBeanException, ReflectionException { public Object getAttribute(String name) throws AttributeNotFoundException, MBeanException, ReflectionException {
GuageCounter gc = GuageCounter.class.cast(guages.get(name)); MBeanAttributeᴶᴹˣ gc = MBeanAttributeᴶᴹˣ.class.cast(guages.get(name));
return gc.getCounter(); return gc.getValue();
} }
@Override @Override

View file

@ -0,0 +1,16 @@
package love.distributedrebirth.bassboonyd.jmx;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface BãßBȍőnMBeanAttributeTypeʸᴰ {
Class<?> value();
}

View file

@ -0,0 +1,21 @@
package love.distributedrebirth.bassboonyd.jmx;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnMBeanAttributeTypeʸᴰ(Long.class)
public class GuageCounterᴶᴹˣ extends AbstractMBeanAttributeᴶᴹˣ {
private volatile long counter;
public GuageCounterᴶᴹˣ(String name, String description) {
super(name, description);
}
public void increment() {
counter++;
}
public Object getValue() {
return Long.valueOf(counter);
}
}

View file

@ -0,0 +1,17 @@
package love.distributedrebirth.bassboonyd.jmx;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
public interface MBeanAttributeᴶᴹˣ {
default Class<?> BãßValueType() {
return getClass().getAnnotation(BãßBȍőnMBeanAttributeTypeʸᴰ.class).value();
}
Object getValue();
String getName();
String getDescription();
}

View file

@ -0,0 +1,13 @@
package love.distributedrebirth.bassboonyd.jmx;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinStoreKeyʸᴰ;
/**
* Only use when no other coffin keys are needed on instance or enum.
*/
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
public enum MBeanStoreKeyᴶᴹˣ implements BãßBȍőnCoffinStoreKeyʸᴰ {
JMX,
;
}

View file

@ -0,0 +1,25 @@
package love.distributedrebirth.bassboonyd.jmx;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnMBeanAttributeTypeʸᴰ(String.class)
public class StringAttributeᴶᴹˣ extends AbstractMBeanAttributeᴶᴹˣ {
private String value;
public StringAttributeᴶᴹˣ(String name, String description) {
super(name, description);
}
public void setValueString(String value) {
this.value = value;
}
public String getValueString() {
return value;
}
public Object getValue() {
return value;
}
}

View file

@ -33,7 +33,7 @@ public enum Base2Terminator implements BãßBȍőnEnumInstanceʸᴰ<Base2Termina
public BãßBȍőnCoffinʸᴰ<BãßBȍőnGlyphSetKeyʸᴰ> GET_BBC() { return BBC; } public BãßBȍőnCoffinʸᴰ<BãßBȍőnGlyphSetKeyʸᴰ> GET_BBC() { return BBC; }
private Base2Terminator() { private Base2Terminator() {
BBC.INIT_BOON(this); BBC.BOON_INIT(this);
} }
public int Bãß2ReadTong(InputStream input, List<V072Tong> output) throws IOException { public int Bãß2ReadTong(InputStream input, List<V072Tong> output) throws IOException {

View file

@ -85,6 +85,6 @@ public enum BaseGlyphSet implements BãßBȍőnGlyphSetʸᴰ<BaseGlyphSet> {
BBC.PUT_OBJ(BãßBȍőnGlyphSetKeyʸᴰ.NUMBERS, numbers); BBC.PUT_OBJ(BãßBȍőnGlyphSetKeyʸᴰ.NUMBERS, numbers);
BBC.PUT_OBJ(BãßBȍőnGlyphSetKeyʸᴰ.HEXIMALS, hex); BBC.PUT_OBJ(BãßBȍőnGlyphSetKeyʸᴰ.HEXIMALS, hex);
BBC.PUT_OBJ(BãßBȍőnGlyphSetKeyʸᴰ.GEMATRIA, gematria); BBC.PUT_OBJ(BãßBȍőnGlyphSetKeyʸᴰ.GEMATRIA, gematria);
BBC.INIT_BOON(this); BBC.BOON_INIT(this);
} }
} }

View file

@ -21,6 +21,6 @@ public enum T02PartBinary implements BãßBȍőnPartʸᴰ<T02PartBinary> {
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.DIAL_TONE, dialTone); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.DIAL_TONE, dialTone);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_KEY, chinaKey); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_KEY, chinaKey);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue);
BBC.INIT_BOON(this); BBC.BOON_INIT(this);
} }
} }

View file

@ -22,6 +22,6 @@ public enum T03PartTrit implements BãßBȍőnPartʸᴰ<T03PartTrit> {
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.DIAL_TONE, dialTone); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.DIAL_TONE, dialTone);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_KEY, chinaKey); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_KEY, chinaKey);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue);
BBC.INIT_BOON(this); BBC.BOON_INIT(this);
} }
} }

View file

@ -25,7 +25,7 @@ public enum T04PartQuad implements BãßBȍőnPartAlt1ʸᴰ<T04PartQuad> {
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_KEY, chinaKey); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_KEY, chinaKey);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_1_VALUE, alt1Value); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_1_VALUE, alt1Value);
BBC.INIT_BOON(this); BBC.BOON_INIT(this);
} }
public T02PartBinary splitPartBinary(T02PartBinary part) { public T02PartBinary splitPartBinary(T02PartBinary part) {

View file

@ -28,6 +28,6 @@ public enum T05PartPental implements BãßBȍőnPartAlt2ʸᴰ<T05PartPental> {
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_1_VALUE, alt1Value); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_1_VALUE, alt1Value);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_2_VALUE, alt2Value); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_2_VALUE, alt2Value);
BBC.INIT_BOON(this); BBC.BOON_INIT(this);
} }
} }

View file

@ -27,7 +27,7 @@ public enum T06PartSeximal implements BãßBȍőnPartAlt1ʸᴰ<T06PartSeximal> {
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_KEY, chinaKey); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_KEY, chinaKey);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_1_VALUE, alt1Value); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_1_VALUE, alt1Value);
BBC.INIT_BOON(this); BBC.BOON_INIT(this);
} }
public T02PartBinary splitPartBinary() { public T02PartBinary splitPartBinary() {

View file

@ -28,6 +28,6 @@ public enum T07PartPlanIt implements BãßBȍőnPartAlt1ʸᴰ<T07PartPlanIt> {
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_KEY, chinaKey); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_KEY, chinaKey);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_1_VALUE, alt1Value); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_1_VALUE, alt1Value);
BBC.INIT_BOON(this); BBC.BOON_INIT(this);
} }
} }

View file

@ -30,7 +30,7 @@ public enum T08PartOctal implements BãßBȍőnPartʸᴰ<T08PartOctal>,BãßBȍ
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_KEY, chinaKey); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_KEY, chinaKey);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.SHIFT_BITS, Integer.valueOf(shiftBits)); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.SHIFT_BITS, Integer.valueOf(shiftBits));
BBC.INIT_BOON(this); BBC.BOON_INIT(this);
} }
public static T08PartOctal indexOf(T08PartOctal group, int value) { public static T08PartOctal indexOf(T08PartOctal group, int value) {

View file

@ -28,6 +28,6 @@ public enum T09PartNonary implements BãßBȍőnPartʸᴰ<T09PartNonary> {
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.DIAL_TONE, dialTone); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.DIAL_TONE, dialTone);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_KEY, chinaKey); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_KEY, chinaKey);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue);
BBC.INIT_BOON(this); BBC.BOON_INIT(this);
} }
} }

View file

@ -33,6 +33,6 @@ public enum T10PartDecimal implements BãßBȍőnPartAlt2ʸᴰ<T10PartDecimal> {
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_1_VALUE, alt1Value); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_1_VALUE, alt1Value);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_2_VALUE, alt2Value); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_2_VALUE, alt2Value);
BBC.INIT_BOON(this); BBC.BOON_INIT(this);
} }
} }

View file

@ -32,6 +32,6 @@ public enum T11PartUndecimal implements BãßBȍőnPartAlt1ʸᴰ<T11PartUndecima
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_KEY, chinaKey); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_KEY, chinaKey);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_1_VALUE, alt1Value); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_1_VALUE, alt1Value);
BBC.INIT_BOON(this); BBC.BOON_INIT(this);
} }
} }

View file

@ -33,6 +33,6 @@ public enum T12PartUncial implements BãßBȍőnPartAlt1ʸᴰ<T12PartUncial> {
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_KEY, chinaKey); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_KEY, chinaKey);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_1_VALUE, alt1Value); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_1_VALUE, alt1Value);
BBC.INIT_BOON(this); BBC.BOON_INIT(this);
} }
} }

View file

@ -37,7 +37,7 @@ public enum T16PartHex implements BãßBȍőnPartAlt1ʸᴰ<T16PartHex> {
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_KEY, chinaKey); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_KEY, chinaKey);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_1_VALUE, alt1Value); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_1_VALUE, alt1Value);
BBC.INIT_BOON(this); BBC.BOON_INIT(this);
} }
public T02PartBinary splitPartBinary(T04PartQuad part) { public T02PartBinary splitPartBinary(T04PartQuad part) {

View file

@ -55,7 +55,7 @@ public enum T20PartScore implements BãßBȍőnPartAlt4ʸᴰ<T20PartScore> {
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_2_VALUE, alt2Value); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_2_VALUE, alt2Value);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_3_VALUE, alt3Value); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_3_VALUE, alt3Value);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_4_VALUE, alt4Value); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.ALT_4_VALUE, alt4Value);
BBC.INIT_BOON(this); BBC.BOON_INIT(this);
} }
public T20PartScore BãßValueOfOpenLC(String openLCKey) { public T20PartScore BãßValueOfOpenLC(String openLCKey) {

View file

@ -79,6 +79,6 @@ public enum T60PartSexagesimal implements BãßBȍőnPartʸᴰ<T60PartSexagesima
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.DIAL_TONE, dialTone); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.DIAL_TONE, dialTone);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_KEY, chinaKey); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_KEY, chinaKey);
BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue); BBC.PUT_OBJ(BãßBȍőnPartKeyʸᴰ.CHINA_VALUE, chinaValue);
BBC.INIT_BOON(this); BBC.BOON_INIT(this);
} }
} }

View file

@ -8,35 +8,47 @@ import love.distributedrebirth.bassboonyd.BãßBȍőnClassInfoʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinOpenʸᴰ; import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinOpenʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinʸᴰ; import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnEnumInstanceʸᴰ; import love.distributedrebirth.bassboonyd.BãßBȍőnEnumInstanceʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnEnumJmxKeyʸᴰ; import love.distributedrebirth.bassboonyd.BãßBȍőnPackageInfoʸᴰ;
import love.distributedrebirth.bassboonyd.BãßBȍőnEnumJmxʸᴰ; import love.distributedrebirth.bassboonyd.jmx.BooleanAttributeᴶᴹˣ;
import love.distributedrebirth.bassboonyd.jmx.MBeanStoreKeyᴶᴹˣ;
import love.distributedrebirth.bassboonyd.jmx.BãßBȍőnEnumJmxʸᴰ;
import love.distributedrebirth.bassboonyd.jmx.GuageCounterᴶᴹˣ;
import love.distributedrebirth.bassboonyd.jmx.StringAttributeᴶᴹˣ;
import love.distributedrebirth.numberxd.base2t.BasePartFactory; import love.distributedrebirth.numberxd.base2t.BasePartFactory;
import love.distributedrebirth.numberxd.base2t.part.BãßBȍőnPartKeyʸᴰ; import love.distributedrebirth.numberxd.base2t.part.BãßBȍőnPartKeyʸᴰ;
import love.distributedrebirth.numberxd.base2t.part.BãßBȍőnPartʸᴰ; import love.distributedrebirth.numberxd.base2t.part.BãßBȍőnPartʸᴰ;
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") @BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
@BãßBȍőnClassInfoʸᴰ(name = "TOSWarpCore", purpose = "The warpcore writer and armor manager.") @BãßBȍőnClassInfoʸᴰ(name = "TOSWarpCore", purpose = "The warpcore writer and armor manager.")
public enum TOSWarpCore implements BãßBȍőnEnumInstanceʸᴰ<TOSWarpCore>,BãßBȍőnEnumJmxʸᴰ<TOSWarpCore,BãßBȍőnEnumJmxKeyʸᴰ> { @BãßBȍőnPackageInfoʸᴰ(name = "love.distributedrebirth.numberxd")
public enum TOSWarpCore implements BãßBȍőnEnumInstanceʸᴰ<TOSWarpCore>,BãßBȍőnEnumJmxʸᴰ<TOSWarpCore,MBeanStoreKeyᴶᴹˣ> {
INSTANCE; INSTANCE;
private final BãßBȍőnCoffinOpenʸᴰ<BãßBȍőnEnumJmxKeyʸᴰ> BBC = BãßBȍőnCoffinOpenʸᴰ.newInstance(); private final BãßBȍőnCoffinOpenʸᴰ<MBeanStoreKeyᴶᴹˣ> BBC = BãßBȍőnCoffinOpenʸᴰ.newInstance();
public BãßBȍőnCoffinʸᴰ<BãßBȍőnEnumJmxKeyʸᴰ> GET_BBC() { return BBC; } public BãßBȍőnCoffinʸᴰ<MBeanStoreKeyᴶᴹˣ> GET_BBC() { return BBC; }
private String armedWarpCipherName; private final BooleanAttributeᴶᴹˣ armedWarpCipherLock;
private String armedWarpCipherDescription; private final StringAttributeᴶᴹˣ armedWarpWaterName;
private final StringAttributeᴶᴹˣ armedWarpWaterDesc;
private final GuageCounter readCounter; private final GuageCounterᴶᴹˣ warpCoreReads;
private final GuageCounter writeCounter; private final GuageCounterᴶᴹˣ warpCoreWrites;
private TOSWarpCore() { private TOSWarpCore() {
BBC.INIT_BOON(this); BBC.BOON_INIT(this);
initJmx(BãßBȍőnEnumJmxKeyʸᴰ.JMX); BȍőnJmxInit(MBeanStoreKeyᴶᴹˣ.JMX);
readCounter = BȍőnInitGuage(BãßBȍőnEnumJmxKeyʸᴰ.JMX, "reads", "The amount of warpcore reads."); warpCoreReads = BȍőnJmxInitGuageCounter(MBeanStoreKeyᴶᴹˣ.JMX, "warpCoreReads", "The amount of warpcore reads.");
writeCounter = BȍőnInitGuage(BãßBȍőnEnumJmxKeyʸᴰ.JMX, "writes", "The amount of warpcore writes."); warpCoreWrites = BȍőnJmxInitGuageCounter(MBeanStoreKeyᴶᴹˣ.JMX, "warpCoreWrites", "The amount of warpcore writes.");
armedWarpWaterName = BȍőnJmxInitStringAttribute(MBeanStoreKeyᴶᴹˣ.JMX, "armedWarpWaterName", "The armed water cipher name.");
armedWarpWaterName.setValueString("default");
armedWarpWaterDesc = BȍőnJmxInitStringAttribute(MBeanStoreKeyᴶᴹˣ.JMX, "armedWarpWaterDesc", "The armed water cipher description.");
armedWarpWaterDesc.setValueString("Current active cipher.");
armedWarpCipherLock = BȍőnJmxInitBooleanAttribute(MBeanStoreKeyᴶᴹˣ.JMX, "armedWarpCipherLock", "Is the water cipher locked.");
armedWarpCipherLock.setValueBoolean(false);
} }
public void BãßLockWarpCipher() { public void BãßLockWarpCipher() {
armedWarpCipherLock.setValueBoolean(true);
for (int base:BasePartFactory.INSTANCE.BãßBases()) { for (int base:BasePartFactory.INSTANCE.BãßBases()) {
for (BãßBȍőnPartʸᴰ<?> part:BasePartFactory.INSTANCE.BãßBuildPartsByBase(base)) { for (BãßBȍőnPartʸᴰ<?> part:BasePartFactory.INSTANCE.BãßBuildPartsByBase(base)) {
BãßBȍőnCoffinOpenʸᴰ.class.cast(part.GET_BBC()).LOCK_COFFIN(); BãßBȍőnCoffinOpenʸᴰ.class.cast(part.GET_BBC()).LOCK_COFFIN();
@ -45,18 +57,10 @@ public enum TOSWarpCore implements BãßBȍőnEnumInstanceʸᴰ<TOSWarpCore>,Bã
} }
public WaterBucket BãßCurrentWarpCore() { public WaterBucket BãßCurrentWarpCore() {
readCounter.increment(); warpCoreReads.increment();
WaterCipher warpCipher = new WaterCipher(); WaterCipher warpCipher = new WaterCipher();
if (armedWarpCipherName == null) { warpCipher.setName(armedWarpWaterName.getValueString());
warpCipher.setName("default"); warpCipher.setDescription(armedWarpWaterDesc.getValueString());
} else {
warpCipher.setName(armedWarpCipherName);
}
if (armedWarpCipherDescription == null) {
warpCipher.setName("Current active cipher.");
} else {
warpCipher.setDescription(armedWarpCipherDescription);
}
for (int base:BasePartFactory.INSTANCE.BãßBases()) { for (int base:BasePartFactory.INSTANCE.BãßBases()) {
WaterCipherHeart heart = new WaterCipherHeart(); WaterCipherHeart heart = new WaterCipherHeart();
BãßBȍőnPartʸᴰ<?>[] bases = BasePartFactory.INSTANCE.BãßBuildPartsByBase(base); BãßBȍőnPartʸᴰ<?>[] bases = BasePartFactory.INSTANCE.BãßBuildPartsByBase(base);
@ -77,9 +81,9 @@ public enum TOSWarpCore implements BãßBȍőnEnumInstanceʸᴰ<TOSWarpCore>,Bã
} }
public void BãßArmWarpCore(WaterBucket warpBucket) { public void BãßArmWarpCore(WaterBucket warpBucket) {
writeCounter.increment(); warpCoreWrites.increment();
armedWarpCipherName = warpBucket.theWater().getName(); armedWarpWaterName.setValueString(warpBucket.theWater().getName());
armedWarpCipherDescription = warpBucket.theWater().getDescription(); armedWarpWaterDesc.setValueString(warpBucket.theWater().getDescription());
for (WaterCipherHeart heart:warpBucket.theWater().getCipherHearts()) { for (WaterCipherHeart heart:warpBucket.theWater().getCipherHearts()) {
BãßBȍőnPartʸᴰ<?>[] bases = BasePartFactory.INSTANCE.BãßBuildPartsByBase(heart.getBass()); BãßBȍőnPartʸᴰ<?>[] bases = BasePartFactory.INSTANCE.BãßBuildPartsByBase(heart.getBass());
Map<String, BãßBȍőnPartʸᴰ<?>> baseParts = new HashMap<>(); Map<String, BãßBȍőnPartʸᴰ<?>> baseParts = new HashMap<>();