1 // Copyright 2012 Google Inc. All Rights Reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //     http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #ifndef POLO_PAIRING_SERVERPAIRINGSESSION_H_
16 #define POLO_PAIRING_SERVERPAIRINGSESSION_H_
17 
18 #include <string>
19 
20 #include "polo/pairing/pairingsession.h"
21 #include "polo/pairing/pairinglistener.h"
22 
23 namespace polo {
24 namespace pairing {
25 
26 // A Polo server pairing session. This handles the logic for sending and
27 // receiving Polo messages during a pairing session.
28 class ServerPairingSession : public PairingSession {
29  public:
30   // Creates a new server pairing session.
31   // @param wire the wire adapter used to send and receive Polo messages
32   // @param context the Polo pairing context
33   // @param challenge the challenge response
34   // @param server_name the server name
35   ServerPairingSession(wire::PoloWireAdapter *wire,
36                        PairingContext *context,
37                        PoloChallengeResponse* challenge,
38                        const std::string &server_name);
39 
40   ~ServerPairingSession();
41 
42   // @override
43   virtual void OnPairingRequestMessage(
44       const message::PairingRequestMessage& message);
45 
46   // @override
47   virtual void OnOptionsMessage(
48       const message::OptionsMessage& message);
49 
50   // @override
51   virtual void OnConfigurationMessage(
52       const message::ConfigurationMessage& message);
53 
54   // @override
55   virtual void OnConfigurationAckMessage(
56       const message::ConfigurationAckMessage& message);
57 
58   // @override
59   virtual void OnPairingRequestAckMessage(
60       const message::PairingRequestAckMessage& message);
61 
62  protected:
63   // @override
64   virtual void DoInitializationPhase();
65 
66   // @override
67   virtual void DoConfigurationPhase();
68 
69  private:
70   std::string server_name_;
71 };
72 
73 }  // namespace pairing
74 }  // namespace polo
75 
76 #endif  // POLO_PAIRING_SERVERPAIRINGSESSION_H_
77