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.GetChannelCipherSuites;
27 import org.metricshub.ipmi.core.coding.protocol.encoder.Protocolv20Encoder;
28 import org.metricshub.ipmi.core.coding.rmcp.RmcpMessage;
29 import org.metricshub.ipmi.core.common.TypeConverter;
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.Default;
33 import org.metricshub.ipmi.core.sm.events.GetChannelCipherSuitesPending;
34 import org.metricshub.ipmi.core.sm.events.StateMachineEvent;
35
36
37
38
39
40 public class Uninitialized extends State {
41
42 @Override
43 public void doTransition(StateMachine stateMachine,
44 StateMachineEvent machineEvent) {
45 if (machineEvent instanceof GetChannelCipherSuitesPending) {
46 Default event = (GetChannelCipherSuitesPending) machineEvent;
47 GetChannelCipherSuites cipherSuites = new GetChannelCipherSuites(
48 TypeConverter.intToByte(0xE), (byte) 0);
49 try {
50 stateMachine.setCurrent(new CiphersWaiting(0, event
51 .getSequenceNumber()));
52
53 stateMachine.sendMessage(Encoder.encode(
54 new Protocolv20Encoder(), cipherSuites,
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 }
64 }
65
66 @Override
67 public void doAction(StateMachine stateMachine, RmcpMessage message) {
68
69 }
70
71 }