X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fnetconf-util%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Futil%2Fmessages%2FNetconfHelloMessageAdditionalHeader.java;fp=opendaylight%2Fnetconf%2Fnetconf-util%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Futil%2Fmessages%2FNetconfHelloMessageAdditionalHeader.java;h=f3ca30d2c40a4f924b0b35b5d196ba53295acb57;hb=15863b438cff589c647169776f876c330e2cd651;hp=0000000000000000000000000000000000000000;hpb=38500d0f0e22f84bf31618d8b5e9aab37fdb897c;p=controller.git diff --git a/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/messages/NetconfHelloMessageAdditionalHeader.java b/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/messages/NetconfHelloMessageAdditionalHeader.java new file mode 100644 index 0000000000..f3ca30d2c4 --- /dev/null +++ b/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/messages/NetconfHelloMessageAdditionalHeader.java @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.controller.netconf.util.messages; + +import com.google.common.base.Preconditions; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Additional header can be used with hello message to carry information about + * session's connection. Provided information can be reported via netconf + * monitoring. + *
+ * It has pattern "[username; host-address:port; transport; session-identifier;]" + * username - name of account on a remote + * host-address - client's IP address + * port - port number + * transport - tcp, ssh + * session-identifier - persister, client + * Session-identifier is optional, others mandatory. + *+ * This header is inserted in front of a netconf hello message followed by a newline. + */ +public class NetconfHelloMessageAdditionalHeader { + + private static final String SC = ";"; + + private final String userName; + private final String hostAddress; + private final String port; + private final String transport; + private final String sessionIdentifier; + + public NetconfHelloMessageAdditionalHeader(String userName, String hostAddress, String port, String transport, String sessionIdentifier) { + this.userName = userName; + this.hostAddress = hostAddress; + this.port = port; + this.transport = transport; + this.sessionIdentifier = sessionIdentifier; + } + + public String getUserName() { + return userName; + } + + public String getAddress() { + return hostAddress; + } + + public String getPort() { + return port; + } + + public String getTransport() { + return transport; + } + + public String getSessionIdentifier() { + return sessionIdentifier; + } + + /** + * Format additional header into a string suitable as a prefix for netconf hello message + */ + public String toFormattedString() { + Preconditions.checkNotNull(userName); + Preconditions.checkNotNull(hostAddress); + Preconditions.checkNotNull(port); + Preconditions.checkNotNull(transport); + Preconditions.checkNotNull(sessionIdentifier); + return "[" + userName + SC + hostAddress + ":" + port + SC + transport + SC + sessionIdentifier + SC + "]" + + System.lineSeparator(); + } + + @Override + public String toString() { + final StringBuffer sb = new StringBuffer("NetconfHelloMessageAdditionalHeader{"); + sb.append("userName='").append(userName).append('\''); + sb.append(", hostAddress='").append(hostAddress).append('\''); + sb.append(", port='").append(port).append('\''); + sb.append(", transport='").append(transport).append('\''); + sb.append(", sessionIdentifier='").append(sessionIdentifier).append('\''); + sb.append('}'); + return sb.toString(); + } + + // TODO IPv6 + private static final Pattern pattern = Pattern + .compile("\\[(?