1 package org.umu.cops.ospep;
3 import org.umu.cops.prpep.COPSPepConnection;
4 import org.umu.cops.stack.*;
6 import java.net.Socket;
7 import java.util.Hashtable;
11 * COPSPepConnection represents a PEP-PDP Connection Manager.
12 * Responsible for processing messages received from PDP.
14 public class COPSPepOSConnection extends COPSPepConnection {
17 * Creates a new PEP connection
18 * @param clientType PEP's client-type
19 * @param sock Socket connected to PDP
21 public COPSPepOSConnection(final short clientType, final Socket sock) {
22 super(clientType, sock);
26 * Gets all request state managers
27 * @return A <tt>Hashatable</tt> holding all request state managers
28 * TODO - change the return to Map
30 protected Hashtable getReqStateMans() {
31 return new Hashtable(_managerMap);
35 protected void handleDecisionMsg(final COPSDecisionMsg dMsg) throws COPSException {
36 final COPSPepOSReqStateMan manager = (COPSPepOSReqStateMan)_managerMap.get(dMsg.getClientHandle());
37 manager.processDecision(dMsg);
41 * Adds a new request state
42 * @param clientHandle Client's handle
43 * @param process Policy data processing object
44 * @param clientSIs Client data from the outsourcing event
45 * @return The newly created request state manager
46 * @throws COPSException
48 protected COPSPepOSReqStateMan addRequestState(final String clientHandle, final COPSPepOSDataProcess process,
49 final List<COPSClientSI> clientSIs) throws COPSException {
50 final COPSHandle handle = new COPSHandle(new COPSData(clientHandle));
51 final COPSPepOSReqStateMan manager = new COPSPepOSReqStateMan(_clientType, handle, process, clientSIs);
52 if (_managerMap.get(handle) != null)
53 throw new COPSPepException("Duplicate Handle, rejecting " + clientHandle);
54 _managerMap.put(handle, manager);
55 manager.initRequestState(_sock);