17c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet// Copyright 2012 Google Inc. All Rights Reserved. 27c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet// 37c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet// Licensed under the Apache License, Version 2.0 (the "License"); 47c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet// you may not use this file except in compliance with the License. 57c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet// You may obtain a copy of the License at 67c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet// 77c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet// http://www.apache.org/licenses/LICENSE-2.0 87c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet// 97c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet// Unless required by applicable law or agreed to in writing, software 107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet// distributed under the License is distributed on an "AS IS" BASIS, 117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet// See the License for the specific language governing permissions and 137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet// limitations under the License. 147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifndef POLO_PAIRING_SERVERPAIRINGSESSION_H_ 167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#define POLO_PAIRING_SERVERPAIRINGSESSION_H_ 177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include <string> 197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include "polo/pairing/pairingsession.h" 217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include "polo/pairing/pairinglistener.h" 227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetnamespace polo { 247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetnamespace pairing { 257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet// A Polo server pairing session. This handles the logic for sending and 277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet// receiving Polo messages during a pairing session. 287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetclass ServerPairingSession : public PairingSession { 297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet public: 307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet // Creates a new server pairing session. 317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet // @param wire the wire adapter used to send and receive Polo messages 327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet // @param context the Polo pairing context 337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet // @param challenge the challenge response 347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet // @param server_name the server name 357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ServerPairingSession(wire::PoloWireAdapter *wire, 367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet PairingContext *context, 377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet PoloChallengeResponse* challenge, 387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet const std::string &server_name); 397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ~ServerPairingSession(); 417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet // @override 437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet virtual void OnPairingRequestMessage( 447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet const message::PairingRequestMessage& message); 457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet // @override 477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet virtual void OnOptionsMessage( 487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet const message::OptionsMessage& message); 497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet // @override 517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet virtual void OnConfigurationMessage( 527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet const message::ConfigurationMessage& message); 537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet // @override 557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet virtual void OnConfigurationAckMessage( 567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet const message::ConfigurationAckMessage& message); 577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet // @override 597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet virtual void OnPairingRequestAckMessage( 607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet const message::PairingRequestAckMessage& message); 617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet protected: 637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet // @override 647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet virtual void DoInitializationPhase(); 657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet // @override 677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet virtual void DoConfigurationPhase(); 687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet private: 707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet std::string server_name_; 717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}; 727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} // namespace pairing 747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} // namespace polo 757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif // POLO_PAIRING_SERVERPAIRINGSESSION_H_ 77