1 package org.metricshub.ipmi.core.sm.states;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import org.metricshub.ipmi.core.coding.Encoder;
26 import org.metricshub.ipmi.core.coding.commands.session.GetChannelAuthenticationCapabilities;
27 import org.metricshub.ipmi.core.coding.commands.session.OpenSession;
28 import org.metricshub.ipmi.core.coding.protocol.encoder.Protocolv20Encoder;
29 import org.metricshub.ipmi.core.coding.rmcp.RmcpMessage;
30 import org.metricshub.ipmi.core.sm.StateMachine;
31 import org.metricshub.ipmi.core.sm.actions.ErrorAction;
32 import org.metricshub.ipmi.core.sm.events.Authorize;
33 import org.metricshub.ipmi.core.sm.events.StateMachineEvent;
34
35
36
37
38
39
40 public class Authcap extends State {
41
42 @Override
43 public void doTransition(StateMachine stateMachine,
44 StateMachineEvent machineEvent) {
45 if (machineEvent instanceof Authorize) {
46 Authorize event = (Authorize) machineEvent;
47
48 OpenSession openSession = new OpenSession(event.getSessionId(),
49 event.getPrivilegeLevel(), event.getCipherSuite());
50
51 try {
52 stateMachine.setCurrent(new OpenSessionWaiting(event.getSequenceNumber()));
53 stateMachine.sendMessage(Encoder.encode(
54 new Protocolv20Encoder(), openSession,
55 event.getSequenceNumber(), 0, 0));
56 } catch (Exception e) {
57 stateMachine.setCurrent(this);
58 stateMachine.doExternalAction(new ErrorAction(e));
59 }
60 } else {
61 stateMachine.doExternalAction(new ErrorAction(
62 new IllegalArgumentException("Invalid transition: "
63 + machineEvent.getClass().getSimpleName())));
64 }
65
66 }
67
68 @Override
69 public void doAction(StateMachine stateMachine, RmcpMessage message) {
70
71 }
72
73 }