1 /*
2  * Copyright (C) 2009 Google Inc.  All rights reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.google.polo.pairing;
18 
19 import com.google.polo.exception.PoloException;
20 
21 /**
22  * Listener interface for handling events within a pairing session.
23  */
24 public interface PairingListener {
25 
26   public static enum LogLevel {
27     LOG_DEBUG,
28     LOG_INFO,
29     LOG_ERROR
30   }
31 
32   /**
33    * Called at the start of a new pairing session. The session object can be
34    * inspected to determine whether in client or server mode.
35    *
36    * @param session  the pairing session
37    */
onSessionCreated(PairingSession session)38   void onSessionCreated(PairingSession session);
39 
40   /**
41    * Called when the session calls for the local entity to act as the input
42    * device.
43    *
44    * @param session  the pairing session
45    * @throws PoloException  on error receiving the input
46    */
onPerformInputDeviceRole(PairingSession session)47   void onPerformInputDeviceRole(PairingSession session) throws PoloException;
48 
49   /**
50    * Called when the session calls for the local entity to act as the display
51    * device.
52    *
53    * @param session         the pairing session
54    * @throws PoloException  on error displaying the secret
55    */
onPerformOutputDeviceRole(PairingSession session, byte[] gamma)56   void onPerformOutputDeviceRole(PairingSession session, byte[] gamma)
57       throws PoloException;
58 
59   /**
60    * Called at the end of a pairing session.  The session object can be
61    * inspected to determine success or failure.
62    *
63    * @param session  the pairing session
64    */
onSessionEnded(PairingSession session)65   void onSessionEnded(PairingSession session);
66 
67   /**
68    * Receives various log messages from the protocol.
69    *
70    * @param level    the severity of the message
71    * @param message  the message to log
72    */
onLogMessage(LogLevel level, String message)73   void onLogMessage(LogLevel level, String message);
74 
75 }
76