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