Adding FlowRef,MeterRef and GroupRef for the Error message
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / core / session / SessionManager.java
1 /**
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  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.opendaylight.openflowplugin.openflow.md.core.session;
10
11 import java.util.Collection;
12 import java.util.List;
13 import java.util.Map;
14
15 import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
16 import org.opendaylight.controller.sal.binding.api.data.DataProviderService;
17 import org.opendaylight.openflowjava.protocol.api.connection.ConnectionAdapter;
18 import org.opendaylight.openflowplugin.openflow.md.core.ConnectionConductor;
19 import org.opendaylight.openflowplugin.openflow.md.core.IMDMessageTranslator;
20 import org.opendaylight.openflowplugin.openflow.md.core.SwitchConnectionDistinguisher;
21 import org.opendaylight.openflowplugin.openflow.md.core.TranslatorKey;
22 import org.opendaylight.openflowplugin.openflow.md.queue.PopListener;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
24 import org.opendaylight.yangtools.concepts.ListenerRegistration;
25 import org.opendaylight.yangtools.yang.binding.DataObject;
26
27 /**
28  * @author mirehak
29  */
30 public interface SessionManager {
31
32     /**
33      * @param sessionKey
34      * @return corresponding conductor, holding {@link ConnectionAdapter} to
35      *         primary connection
36      */
37     public SessionContext getSessionContext(SwitchConnectionDistinguisher sessionKey);
38
39     /**
40      * disconnect all underlying {@link ConnectionAdapter}s and notify listeners
41      *
42      * @param sessionKey
43      */
44     public void invalidateSessionContext(SwitchConnectionDistinguisher sessionKey);
45
46     /**
47      * register session context
48      *
49      * @param sessionKey
50      * @param context
51      */
52     public void addSessionContext(SwitchConnectionDistinguisher sessionKey, SessionContext context);
53
54     /**
55      * disconnect particular auxiliary {@link ConnectionAdapter}, identified by
56      * sessionKey and connectionCookie
57      *
58      * @param sessionKey
59      * @param connectionCookie
60      */
61     public void invalidateAuxiliary(SwitchConnectionDistinguisher sessionKey,
62             SwitchConnectionDistinguisher connectionCookie);
63
64     /**
65      * @param connectionConductor
66      */
67     public void invalidateOnDisconnect(ConnectionConductor connectionConductor);
68
69     /**
70      * @param translatorMapping
71      */
72     public void setTranslatorMapping(Map<TranslatorKey, Collection<IMDMessageTranslator<OfHeader, List<DataObject>>>> translatorMapping);
73
74     /**
75      * @return translator mapping
76      */
77     public Map<TranslatorKey, Collection<IMDMessageTranslator<OfHeader, List<DataObject>>>> getTranslatorMapping();
78
79     /**
80      * @param notificationProviderService
81      */
82     public void setNotificationProviderService(NotificationProviderService notificationProviderService);
83
84     /**
85      * @return notificationServiceProvider
86      */
87     public DataProviderService getDataProviderService();
88
89     /**
90      * @param dataServiceProvider
91      */
92     public void setDataProviderService(DataProviderService dataServiceProvider);
93
94     /**
95      * @return notificationServiceProvider
96      */
97     public NotificationProviderService getNotificationProviderService();
98
99     /**
100      * @param listener
101      * @return registration
102      */
103     public ListenerRegistration<SessionListener> registerSessionListener(SessionListener listener);
104
105     /**
106      * @return popListener mapping, key=message type; value=collection of listeners
107      */
108     public Map<Class<? extends DataObject>, Collection<PopListener<DataObject>>> getPopListenerMapping();
109
110     /**
111      * @param popListenerMapping the popListenerMapping to set
112      */
113     void setPopListenerMapping(Map<Class<? extends DataObject>, Collection<PopListener<DataObject>>> popListenerMapping);
114 }