Select Git revision
implementierung.tex
Forked from
stgroup / misc / latex-templates / Thesis Template - German
Source project has a limited visibility.
handler.mustache 5.92 KiB
aspect RagConnectHandler {
{{#Handlers}}
{{#InUse}}
private {{ClassName}} {{rootNodeName}}.{{fieldName}} = {{{constructionSnippet}}};
{{#hasRootTypeComponents}}inh {{ClassName}} ASTNode.{{attributeName}}();{{/hasRootTypeComponents}}
{{#rootTypeComponents}}
eq {{rootNodeName}}.get{{Name}}().{{attributeName}}() = {{fieldName}};
{{/rootTypeComponents}}
syn {{ClassName}} {{rootNodeName}}.{{attributeName}}() = {{fieldName}};
{{/InUse}}
{{/Handlers}}
public void {{rootNodeName}}.{{closeMethodName}}() {
{{#Handlers}}
{{#InUse}}{{fieldName}}.close();{{/InUse}}
{{/Handlers}}
trace().setReceiver({{observerInstanceSingletonMethodName}}().oldReceiver);
{{observerInstanceResetMethodName}}();
}
{{#mqttHandler}}
{{#InUse}}
public void {{rootNodeName}}.{{setupWaitUntilReadyMethodName}}(long time, java.util.concurrent.TimeUnit unit) {
{{fieldName}}.setupWaitUntilReady(time, unit);
}
{{/InUse}}
{{/mqttHandler}}
class RagConnectToken {
static java.util.concurrent.atomic.AtomicLong counter = new java.util.concurrent.atomic.AtomicLong(0);
final long id;
final java.net.URI uri;
final String entityName;
public RagConnectToken(java.net.URI uri, String entityName) {
this.id = counter.incrementAndGet();
this.uri = uri;
this.entityName = entityName;
}
}
class RagConnectTokenMap {
java.util.Map<ASTNode, java.util.List<RagConnectToken>> connectTokensSend = new java.util.HashMap<>();
java.util.Map<ASTNode, java.util.List<RagConnectToken>> connectTokensReceive = new java.util.HashMap<>();
void add(ASTNode node, boolean isReceive, RagConnectToken token) {
java.util.Map<ASTNode, java.util.List<RagConnectToken>> mapOfTokens = (isReceive ? connectTokensReceive : connectTokensSend);
mapOfTokens.computeIfAbsent(node, n -> new java.util.ArrayList<>()).add(token);
}
java.util.List<RagConnectToken> removeAll(ASTNode node, boolean isReceive, java.net.URI uri, String entityName) {
java.util.List<RagConnectToken> listOfTokens = (isReceive ? connectTokensReceive : connectTokensSend).get(node);
if (listOfTokens == null) {
return java.util.Collections.emptyList();
}
java.util.List<RagConnectToken> tokensToRemove = listOfTokens.stream()
.filter(token -> token.uri.equals(uri) && token.entityName.equals(entityName))
.collect(java.util.stream.Collectors.toList());
listOfTokens.removeAll(tokensToRemove);
return tokensToRemove;
}
}
static RagConnectTokenMap ASTNode.connectTokenMap = new RagConnectTokenMap();
interface RagConnectDisconnectHandlerMethod {
boolean call(RagConnectToken token) throws java.io.IOException;
}
class RagConnectPublisher {
java.util.List<Runnable> senders = new java.util.ArrayList<>();
java.util.Map<RagConnectToken, Runnable> tokenToSender;
private byte[] lastValue;
void add(Runnable sender, RagConnectToken connectToken) {
if (tokenToSender == null) {