- protected void endOfInput() {
- logger.debug("Session {} end of input detected while session was in state {}", toString(), isUp() ? "up"
- : "initialized");
- if (isUp()) {
- this.sessionListener.onSessionDown(this, new IOException("End of input detected. Close the session."));
+ public Session toManagementSession() {
+ SessionBuilder builder = new SessionBuilder();
+
+ builder.setSessionId(getSessionId());
+ builder.setSourceHost(new Host(new DomainName(header.getAddress())));
+
+ Preconditions.checkState(DateAndTime.PATTERN_CONSTANTS.size() == 1);
+ String formattedDateTime = formatDateTime(loginTime);
+
+ Matcher matcher = dateTimePattern.matcher(formattedDateTime);
+ Preconditions.checkState(matcher.matches(), "Formatted datetime %s does not match pattern %s", formattedDateTime, dateTimePattern);
+ builder.setLoginTime(new DateAndTime(formattedDateTime));
+
+ builder.setInBadRpcs(new ZeroBasedCounter32(inRpcFail));
+ builder.setInRpcs(new ZeroBasedCounter32(inRpcSuccess));
+ builder.setOutRpcErrors(new ZeroBasedCounter32(outRpcError));
+
+ builder.setUsername(header.getUserName());
+ builder.setTransport(getTransportForString(header.getTransport()));
+
+ builder.setOutNotifications(new ZeroBasedCounter32(0L));
+
+ builder.setKey(new SessionKey(getSessionId()));
+
+ Session1Builder builder1 = new Session1Builder();
+ builder1.setSessionIdentifier(header.getSessionIdentifier());
+ builder.addAugmentation(Session1.class, builder1.build());
+
+ return builder.build();
+ }
+
+ private Class<? extends Transport> getTransportForString(final String transport) {
+ switch(transport) {
+ case "ssh" :
+ return NetconfSsh.class;
+ case "tcp" :
+ return NetconfTcp.class;
+ default:
+ throw new IllegalArgumentException("Unknown transport type " + transport);