Merge "Removed original Hydrogen demo from repo."
[packetcable.git] / packetcable-driver / src / main / java / org / pcmm / rcd / impl / CmtsDataProcessor.java
1 /*
2  * (c) 2015 Cable Television Laboratories, Inc.  All rights reserved.
3  */
4
5 package org.pcmm.rcd.impl;
6
7 import org.pcmm.gates.IPCMMGate;
8 import org.pcmm.gates.ITransactionID;
9 import org.pcmm.gates.impl.PCMMGateReq;
10 import org.umu.cops.COPSStateMan;
11 import org.umu.cops.prpep.COPSPepDataProcess;
12 import org.umu.cops.prpep.COPSPepReqStateMan;
13 import org.umu.cops.stack.COPSData;
14 import org.umu.cops.stack.COPSError;
15
16 import java.util.HashMap;
17 import java.util.Map;
18 import java.util.concurrent.ConcurrentHashMap;
19
20 /**
21  * Data processor for the CMTS emulator.
22  */
23 class CmtsDataProcessor implements COPSPepDataProcess {
24
25     private transient Map<String, String> installDecs = new ConcurrentHashMap<>();
26     private transient Map<String, String> errorDecs = new ConcurrentHashMap<>();
27
28     @Override
29     public void setDecisions(final COPSPepReqStateMan man, final Map<String, String> removeDecs,
30                              final Map<String, String> installDecs, final Map<String, String> errorDecs) {
31
32         // TODO - parameters man & removeDecs not used. They were members when encapsulated in CMTS but were never used.
33         this.installDecs = new ConcurrentHashMap<>(installDecs);
34         this.errorDecs = new ConcurrentHashMap<>(errorDecs);
35     }
36
37     @Override
38     public boolean isFailReport(final COPSPepReqStateMan man) {
39         return (errorDecs != null && errorDecs.size() > 0);
40     }
41
42     @Override
43     public Map<String, String> getReportData(final COPSPepReqStateMan man) {
44         if (isFailReport(man)) {
45             return errorDecs;
46         } else {
47             final Map<String, String> siDataHashTable = new HashMap<>();
48             if (installDecs.size() > 0) {
49                 String data = "";
50                 for (String k : installDecs.keySet()) {
51                     data = installDecs.get(k);
52                     break;
53                 }
54                 final ITransactionID transactionID = PCMMGateReq.parse(new COPSData(data).getData()).getTransactionID();
55
56                 // TODO - Determine how and why a response gate request can have only a transaction ID???
57                 final IPCMMGate responseGate = new PCMMGateReq(null, null, transactionID, null, null, null, null, null);
58
59                 // TODO FIXME - Why is the key always null??? What value should be used here???
60                 final String key = null;
61                 siDataHashTable.put(key, new String(responseGate.getData()));
62             }
63             return siDataHashTable;
64         }
65     }
66
67     @Override
68     public Map<String, String> getClientData(COPSPepReqStateMan man) {
69         // TODO Auto-generated method stub
70         return new HashMap<>();
71     }
72
73     @Override
74     public Map<String, String> getAcctData(COPSPepReqStateMan man) {
75         // TODO Auto-generated method stub
76         return new HashMap<>();
77     }
78
79     @Override
80     public void notifyClosedConnection(final COPSStateMan man, final COPSError error) {
81         // TODO Auto-generated method stub
82     }
83
84     @Override
85     public void notifyNoKAliveReceived(final COPSStateMan man) {
86         // TODO Auto-generated method stub
87     }
88
89     @Override
90     public void closeRequestState(final COPSStateMan man) {
91         // TODO Auto-generated method stub
92     }
93
94     @Override
95     public void newRequestState(final COPSPepReqStateMan man) {
96         // TODO Auto-generated method stub
97     }
98
99 }