mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-31 03:30:08 +08:00
Rewrite in kotlin
This commit is contained in:
parent
1e3db169b0
commit
db77227d35
@ -2,7 +2,6 @@ package net.mamoe.mirai.network.protocol.tim.handler
|
|||||||
|
|
||||||
import net.mamoe.mirai.network.LoginSession
|
import net.mamoe.mirai.network.LoginSession
|
||||||
import net.mamoe.mirai.network.protocol.tim.packet.ServerPacket
|
import net.mamoe.mirai.network.protocol.tim.packet.ServerPacket
|
||||||
import net.mamoe.mirai.utils.MiraiSynchronizedLinkedList
|
|
||||||
import java.io.Closeable
|
import java.io.Closeable
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -27,7 +26,7 @@ fun PacketHandler.asNode(): PacketHandlerNode<PacketHandler> {
|
|||||||
return PacketHandlerNode(this.javaClass, this)
|
return PacketHandlerNode(this.javaClass, this)
|
||||||
}
|
}
|
||||||
|
|
||||||
class PacketHandlerList : MiraiSynchronizedLinkedList<PacketHandlerNode<*>>() {
|
class PacketHandlerList : MutableList<PacketHandlerNode<*>> by mutableListOf() {
|
||||||
|
|
||||||
fun <T : PacketHandler> get(clazz: Class<T>): T {
|
fun <T : PacketHandler> get(clazz: Class<T>): T {
|
||||||
this.forEach {
|
this.forEach {
|
||||||
|
@ -1,18 +1,13 @@
|
|||||||
package net.mamoe.mirai.network.protocol.tim.packet;
|
package net.mamoe.mirai.network.protocol.tim.packet
|
||||||
|
|
||||||
import java.lang.annotation.ElementType;
|
|
||||||
import java.lang.annotation.Retention;
|
|
||||||
import java.lang.annotation.RetentionPolicy;
|
|
||||||
import java.lang.annotation.Target;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Him188moe
|
* @author Him188moe
|
||||||
*/
|
*/
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(AnnotationRetention.RUNTIME)
|
||||||
@Target(ElementType.TYPE)
|
@Target(AnnotationTarget.CLASS, AnnotationTarget.FILE)
|
||||||
public @interface PacketId {
|
annotation class PacketId(
|
||||||
/**
|
/**
|
||||||
* 获取用于识别的包 ID
|
* 用于识别的包 ID
|
||||||
*/
|
*/
|
||||||
String value();
|
val value: String
|
||||||
}
|
)
|
||||||
|
@ -5,4 +5,4 @@ import net.mamoe.mirai.contact.Contact
|
|||||||
/**
|
/**
|
||||||
* @author Him188moe
|
* @author Him188moe
|
||||||
*/
|
*/
|
||||||
class ContactList<C : Contact> : MiraiSynchronizedLinkedHashMap<Long, C>()
|
class ContactList<C : Contact> : MutableMap<Long, C> by mutableMapOf()
|
@ -1,158 +0,0 @@
|
|||||||
package net.mamoe.mirai.utils;
|
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.function.BiConsumer;
|
|
||||||
import java.util.function.BiFunction;
|
|
||||||
import java.util.function.Function;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 实现了可以直接被继承的 SynchronizedLinkedListMap<K,V>
|
|
||||||
*
|
|
||||||
* @param <K> the type of key
|
|
||||||
* @param <V> the type of value
|
|
||||||
*
|
|
||||||
* @author NaturalHG
|
|
||||||
*/
|
|
||||||
public class MiraiSynchronizedLinkedHashMap<K, V> extends AbstractMap<K, V> {
|
|
||||||
|
|
||||||
public MiraiSynchronizedLinkedHashMap() {
|
|
||||||
this.sortedMap = Collections.synchronizedMap(new LinkedHashMap<>());
|
|
||||||
}
|
|
||||||
|
|
||||||
protected final Map<K, V> sortedMap;
|
|
||||||
|
|
||||||
public MiraiSynchronizedLinkedHashMap(LinkedHashMap<K, V> map) {
|
|
||||||
this.sortedMap = Collections.synchronizedMap(map);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int size() {
|
|
||||||
return sortedMap.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isEmpty() {
|
|
||||||
return sortedMap.isEmpty();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean containsKey(Object key) {
|
|
||||||
return sortedMap.containsKey(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean containsValue(Object value) {
|
|
||||||
return sortedMap.containsValue(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public V get(Object key) {
|
|
||||||
return sortedMap.get(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public V put(K key, V value) {
|
|
||||||
return sortedMap.put(key,value);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public V remove(Object key) {
|
|
||||||
return sortedMap.remove(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void putAll(Map<? extends K, ? extends V> m) {
|
|
||||||
sortedMap.putAll(m);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void clear() {
|
|
||||||
sortedMap.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Set<K> keySet() {
|
|
||||||
return sortedMap.keySet();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Collection<V> values() {
|
|
||||||
return sortedMap.values();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Set<Entry<K, V>> entrySet() {
|
|
||||||
return sortedMap.entrySet();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return this.sortedMap.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public V getOrDefault(Object key, V defaultValue) {
|
|
||||||
return this.sortedMap.getOrDefault(key,defaultValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void forEach(BiConsumer<? super K, ? super V> action) {
|
|
||||||
this.sortedMap.forEach(action);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean replace(K key, V oldValue, V newValue) {
|
|
||||||
return this.sortedMap.replace(key,oldValue,newValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public V replace(K key, V value) {
|
|
||||||
return this.sortedMap.replace(key,value);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void replaceAll(BiFunction<? super K, ? super V, ? extends V> function) {
|
|
||||||
this.sortedMap.replaceAll(function);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public V compute(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction) {
|
|
||||||
return this.sortedMap.compute(key,remappingFunction);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction) {
|
|
||||||
return this.sortedMap.computeIfAbsent(key,mappingFunction);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction) {
|
|
||||||
return this.sortedMap.computeIfPresent(key,remappingFunction);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
return this.sortedMap.hashCode();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public V putIfAbsent(K key, V value) {
|
|
||||||
return this.sortedMap.putIfAbsent(key,value);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction) {
|
|
||||||
return this.sortedMap.merge(key,value,remappingFunction);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean equals(MiraiSynchronizedLinkedHashMap o) {
|
|
||||||
return this.sortedMap.equals(o.sortedMap);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object o) {
|
|
||||||
return o instanceof MiraiSynchronizedLinkedHashMap ? this.equals((MiraiSynchronizedLinkedHashMap) o) : super.equals(o);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,187 +0,0 @@
|
|||||||
package net.mamoe.mirai.utils;
|
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.function.Consumer;
|
|
||||||
import java.util.function.IntFunction;
|
|
||||||
import java.util.function.Predicate;
|
|
||||||
import java.util.function.UnaryOperator;
|
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Him188moe
|
|
||||||
*/
|
|
||||||
public class MiraiSynchronizedLinkedList<E> extends AbstractList<E> {
|
|
||||||
@SuppressWarnings("WeakerAccess")
|
|
||||||
protected final List<E> syncList;
|
|
||||||
|
|
||||||
public MiraiSynchronizedLinkedList() {
|
|
||||||
this.syncList = Collections.synchronizedList(new LinkedList<>());
|
|
||||||
}
|
|
||||||
|
|
||||||
public MiraiSynchronizedLinkedList(Collection<E> collection) {
|
|
||||||
this.syncList = Collections.synchronizedList(new LinkedList<>(collection));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public E get(int index) {
|
|
||||||
return this.syncList.get(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void forEach(Consumer<? super E> action) {
|
|
||||||
this.syncList.forEach(action);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Spliterator<E> spliterator() {
|
|
||||||
return this.syncList.spliterator();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Stream<E> stream() {
|
|
||||||
return this.syncList.stream();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Stream<E> parallelStream() {
|
|
||||||
return this.syncList.parallelStream();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int size() {
|
|
||||||
return this.syncList.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("SuspiciousToArrayCall")
|
|
||||||
@Override
|
|
||||||
public <T> T[] toArray(IntFunction<T[]> generator) {
|
|
||||||
return this.syncList.toArray(generator);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean removeIf(Predicate<? super E> filter) {
|
|
||||||
return this.syncList.removeIf(filter);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void replaceAll(UnaryOperator<E> operator) {
|
|
||||||
this.syncList.replaceAll(operator);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void sort(Comparator<? super E> c) {
|
|
||||||
this.syncList.sort(c);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean add(E e) {
|
|
||||||
return this.syncList.add(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public E set(int index, E element) {
|
|
||||||
return this.syncList.set(index, element);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void add(int index, E element) {
|
|
||||||
this.syncList.add(index, element);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public E remove(int index) {
|
|
||||||
return this.syncList.remove(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int indexOf(Object o) {
|
|
||||||
return this.syncList.indexOf(o);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int lastIndexOf(Object o) {
|
|
||||||
return this.syncList.lastIndexOf(o);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void clear() {
|
|
||||||
this.syncList.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean addAll(int index, Collection<? extends E> c) {
|
|
||||||
return this.syncList.addAll(index, c);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Iterator<E> iterator() {
|
|
||||||
return this.syncList.iterator();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ListIterator<E> listIterator() {
|
|
||||||
return this.syncList.listIterator();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ListIterator<E> listIterator(int index) {
|
|
||||||
return this.syncList.listIterator(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<E> subList(int fromIndex, int toIndex) {
|
|
||||||
return this.syncList.subList(fromIndex, toIndex);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
return this.syncList.hashCode();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isEmpty() {
|
|
||||||
return this.syncList.isEmpty();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean contains(Object o) {
|
|
||||||
return this.syncList.contains(o);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object[] toArray() {
|
|
||||||
return this.syncList.toArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("SuspiciousToArrayCall")
|
|
||||||
@Override
|
|
||||||
public <T> T[] toArray(T[] a) {
|
|
||||||
return this.syncList.toArray(a);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean remove(Object o) {
|
|
||||||
return this.syncList.remove(o);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean containsAll(Collection<?> c) {
|
|
||||||
return this.syncList.containsAll(c);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean addAll(Collection<? extends E> c) {
|
|
||||||
return this.syncList.addAll(c);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean removeAll(Collection<?> c) {
|
|
||||||
return this.syncList.removeAll(c);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean retainAll(Collection<?> c) {
|
|
||||||
return this.syncList.retainAll(c);
|
|
||||||
}
|
|
||||||
}
|
|
@ -22,7 +22,7 @@ class MiraiConfig(private val root: File) : MiraiConfigSection<Any>(parse(Object
|
|||||||
val dumperOptions = DumperOptions()
|
val dumperOptions = DumperOptions()
|
||||||
dumperOptions.defaultFlowStyle = DumperOptions.FlowStyle.BLOCK
|
dumperOptions.defaultFlowStyle = DumperOptions.FlowStyle.BLOCK
|
||||||
val yaml = Yaml(dumperOptions)
|
val yaml = Yaml(dumperOptions)
|
||||||
val content = yaml.dump(this.sortedMap)
|
val content = yaml.dump(this)
|
||||||
try {
|
try {
|
||||||
ByteArrayInputStream(content.toByteArray()).transferTo(FileOutputStream(this.root))
|
ByteArrayInputStream(content.toByteArray()).transferTo(FileOutputStream(this.root))
|
||||||
} catch (e: IOException) {
|
} catch (e: IOException) {
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package net.mamoe.mirai.utils.config;
|
package net.mamoe.mirai.utils.config;
|
||||||
|
|
||||||
import net.mamoe.mirai.utils.MiraiSynchronizedLinkedHashMap;
|
|
||||||
|
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
@ -10,7 +8,7 @@ import java.util.function.Supplier;
|
|||||||
/**
|
/**
|
||||||
* @author NaturalHG
|
* @author NaturalHG
|
||||||
*/
|
*/
|
||||||
public class MiraiConfigSection<T> extends MiraiSynchronizedLinkedHashMap<String, T> {
|
public class MiraiConfigSection<T> extends LinkedHashMap<String, T> {
|
||||||
|
|
||||||
public MiraiConfigSection(){
|
public MiraiConfigSection(){
|
||||||
super();
|
super();
|
||||||
|
Loading…
Reference in New Issue
Block a user