1.0
This commit is contained in:
55
旧的java项目/itcast/server/session/GroupSessionMemoryImpl.java
Normal file
55
旧的java项目/itcast/server/session/GroupSessionMemoryImpl.java
Normal file
@@ -0,0 +1,55 @@
|
||||
package cn.itcast.server.session;
|
||||
|
||||
import io.netty.channel.Channel;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class GroupSessionMemoryImpl implements GroupSession {
|
||||
private final Map<String, Group> groupMap = new ConcurrentHashMap<>();
|
||||
|
||||
@Override
|
||||
public Group createGroup(String name, Set<String> members) {
|
||||
Group group = new Group(name, members);
|
||||
return groupMap.putIfAbsent(name, group);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Group joinMember(String name, String member) {
|
||||
return groupMap.computeIfPresent(name, (key, value) -> {
|
||||
// value.getMembers().add(member);
|
||||
return value;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Group removeMember(String name, String member) {
|
||||
return groupMap.computeIfPresent(name, (key, value) -> {
|
||||
// value.getMembers().remove(member);
|
||||
return value;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Group removeGroup(String name) {
|
||||
return groupMap.remove(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getMembers(String name) {
|
||||
// return groupMap.getOrDefault(name, Group.EMPTY_GROUP).getMembers();
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Channel> getMembersChannel(String name) {
|
||||
return getMembers(name).stream()
|
||||
.map(member -> SessionFactory.getSession().getChannel(member))
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user