17c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/* 27c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * Copyright (C) 2009 Google Inc. All rights reserved. 37c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * 47c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * Licensed under the Apache License, Version 2.0 (the "License"); 57c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * you may not use this file except in compliance with the License. 67c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * You may obtain a copy of the License at 77c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * 87c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * http://www.apache.org/licenses/LICENSE-2.0 97c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * 107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * Unless required by applicable law or agreed to in writing, software 117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * distributed under the License is distributed on an "AS IS" BASIS, 127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * See the License for the specific language governing permissions and 147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * limitations under the License. 157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet */ 167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetpackage com.google.polo.pairing.message; 187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetimport com.google.polo.wire.PoloWireInterface; 207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/** 227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * Base class for internal representation of Polo protocol messages. 237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * 247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * <p>Implementations of {@link PoloWireInterface} will translate to and from 257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * the wire version of protocol messages to subclasses of PoloMessage. 267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet */ 277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetpublic class PoloMessage { 287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /** 307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * List of all available Polo protocol message types, in order of protocol 317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * phases. The values are synchronized with the constants defined in 327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * polo.proto. 337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet */ 347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet public static enum PoloMessageType { 357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet UNKNOWN(0), 367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet PAIRING_REQUEST(10), 377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet PAIRING_REQUEST_ACK(11), 387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet OPTIONS(20), 397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet CONFIGURATION(30), 407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet CONFIGURATION_ACK(31), 417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet SECRET(40), 427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet SECRET_ACK(41); 437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet private final int mIntVal; 457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet private PoloMessageType(int intVal) { 477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet mIntVal = intVal; 487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet public static PoloMessageType fromIntVal(int intVal) { 517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for (PoloMessageType messageType : PoloMessageType.values()) { 527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (messageType.getAsInt() == intVal) { 537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return messageType; 547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return null; 577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet public int getAsInt() { 607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return mIntVal; 617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /** 657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * The Polo protocol message type of this instance. 667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet */ 677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet private final PoloMessageType mType; 687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet public PoloMessage(PoloMessageType type) { 707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet mType = type; 717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet public PoloMessageType getType() { 747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return mType; 757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet @Override 787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet public String toString() { 797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return "[" + mType.toString() + "]"; 807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 83