View Javadoc
1   package org.metricshub.ipmi.core.coding.sol;
2   
3   /*-
4    * ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲
5    * IPMI Java Client
6    * ჻჻჻჻჻჻
7    * Copyright 2023 Verax Systems, MetricsHub
8    * ჻჻჻჻჻჻
9    * This program is free software: you can redistribute it and/or modify
10   * it under the terms of the GNU Lesser General Public License as
11   * published by the Free Software Foundation, either version 3 of the
12   * License, or (at your option) any later version.
13   *
14   * This program is distributed in the hope that it will be useful,
15   * but WITHOUT ANY WARRANTY; without even the implied warranty of
16   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17   * GNU General Lesser Public License for more details.
18   *
19   * You should have received a copy of the GNU General Lesser Public
20   * License along with this program.  If not, see
21   * <http://www.gnu.org/licenses/lgpl-3.0.html>.
22   * ╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱
23   */
24  
25  import org.metricshub.ipmi.core.coding.commands.ResponseData;
26  import org.metricshub.ipmi.core.coding.payload.sol.SolAckState;
27  import org.metricshub.ipmi.core.coding.payload.sol.SolStatus;
28  
29  import java.util.Set;
30  
31  /**
32   * Impementation of {@link ResponseData} for {@link org.metricshub.ipmi.core.coding.payload.sol.SolMessage}s.
33   */
34  public class SolResponseData implements ResponseData {
35  
36      /**
37       * Sequence number of corresponding request message.
38       */
39      private final byte requestSequenceNumber;
40  
41      /**
42       * Information if corresponding message was ACKd or NACKd by remote system.
43       */
44      private final SolAckState acknowledgeState;
45  
46      /**
47       * Set of statuses returned by the remote system in a response for corresponging message.
48       */
49      private final Set<SolStatus> statuses;
50  
51      /**
52       * Number of characters accepted from the corresponding message.
53       */
54      private final byte acceptedCharactersNumber;
55  
56      /**
57       * Creates new instance of {@link SolResponseData} filled with given data.
58       *
59       * @param acknowledgeState
60       *          Acknowledge status for corresponding request message
61       * @param statuses
62       *          Set of statuses
63       */
64      public SolResponseData(byte requestSequenceNumber, SolAckState acknowledgeState, Set<SolStatus> statuses, byte acceptedCharactersNumber) {
65          this.requestSequenceNumber = requestSequenceNumber;
66          this.acknowledgeState = acknowledgeState;
67          this.statuses = statuses;
68          this.acceptedCharactersNumber = acceptedCharactersNumber;
69      }
70  
71      public byte getRequestSequenceNumber() {
72          return requestSequenceNumber;
73      }
74  
75      public SolAckState getAcknowledgeState() {
76          return acknowledgeState;
77      }
78  
79      public Set<SolStatus> getStatuses() {
80          return statuses;
81      }
82  
83      public byte getAcceptedCharactersNumber() {
84          return acceptedCharactersNumber;
85      }
86  
87      @Override
88      public String toString() {
89          final StringBuilder sb = new StringBuilder("SolResponseData{");
90          sb.append("requestSequenceNumber=").append(requestSequenceNumber);
91          sb.append(", acknowledgeState=").append(acknowledgeState);
92          sb.append(", statuses=").append(statuses);
93          sb.append(", acceptedCharactersNumber=").append(acceptedCharactersNumber);
94          sb.append('}');
95          return sb.toString();
96      }
97  }