001: /*
002: * Copyright (c) 2001 Silvere Martin-Michiellot All Rights Reserved.
003: *
004: * Silvere Martin-Michiellot grants you ("Licensee") a non-exclusive,
005: * royalty free, license to use, modify and redistribute this
006: * software in source and binary code form,
007: * provided that i) this copyright notice and license appear on all copies of
008: * the software; and ii) Licensee does not utilize the software in a manner
009: * which is disparaging to Silvere Martin-Michiellot.
010: *
011: * This software is provided "AS IS," without a warranty of any kind. ALL
012: * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
013: * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
014: * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. Silvere Martin-Michiellot
015: * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES
016: * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
017: * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
018: * Silvere Martin-Michiellot OR ITS LICENSORS BE LIABLE
019: * FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
020: * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
021: * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
022: * OR INABILITY TO USE SOFTWARE, EVEN IF Silvere Martin-Michiellot HAS BEEN
023: * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
024: *
025: * This software is not designed or intended for use in on-line control of
026: * aircraft, air traffic, aircraft navigation or aircraft communications; or in
027: * the design, construction, operation or maintenance of any nuclear
028: * facility. Licensee represents and warrants that it will not use or
029: * redistribute the Software for such purposes.
030: *
031: * @Author: Silvere Martin-Michiellot
032: *
033: */
034:
035: package com.db.net;
036:
037: import java.io.Serializable;
038: import java.net.InetAddress;
039: import javax.media.j3d.Transform3D;
040:
041: import com.db.server.LoginInformation;
042:
043: /**
044: */
045:
046: //user's authentification called upon account creation or login to an existing account
047:
048: public class Authentification extends Message implements Serializable {
049:
050: //addition and connect for the first time immediately are an immigration
051: //you can use this process either for full accounts or guest accounts
052: public final static int IMMIGRATE = 1;
053: //only adds account but does not open a client connection, useful mainly for ruler to set up batch accounts
054: public final static int ADDITION = 2;
055: //reconnect is the normal way of login to your account
056: public final static int RECONNECT = 3;
057: //to manually close the connection
058: //server should close connection by itself if client is lost (power failure, network failure...)
059: public final static int CLOSE_SESSION = 4;
060: //Deletes account
061: //Does note need to be logged on to delete the account
062: //actually closes the the connection if connected
063: public final static int DELETION = 5;
064: //Deletes also all properties using Avatar.TRASH_ALL as succession policy
065: //not very cool for those who stay
066: public final static int IMMEDIATE_DELETION = 6;
067:
068: private LoginInformation loginInformation;
069: //one of Authentification.IMMIGRATE, Authentification.ADDITION, Authentification.RECONNECT, Authentification.CLOSE_SESSION, Authentification.DELETION or Authentification.IMMEDIATE_DELETION
070: private int accessKind;
071: private InetAddress IP;
072: private int port;
073: private Transform3D position;
074:
075: public Authentification(LoginInformation loginInformation,
076: int accessKind, InetAddress IP, int port) {
077:
078: if ((accessKind >= Authentification.ADDITION)
079: && (accessKind <= Authentification.IMMEDIATE_DELETION)) {
080: this .loginInformation = loginInformation;
081: this .accessKind = accessKind;
082: this .IP = IP;
083: this .port = port;
084: } else {
085: throw new java.lang.IllegalArgumentException(
086: "request access kind must be one of Authentification.IMMIGRATE, Authentification.ADDITION, Authentification.RECONNECT, Authentification.CLOSE_SESSION, Authentification.DELETION or Authentification.IMMEDIATE_DELETION.");
087: }
088:
089: }
090:
091: //Position gives a position in one of the WorldSpot for that Universe Server
092: //rulers should ensure that Transform3D.ZERO is a valid arrival position for their Virtual World (up to the ruler)
093: //Clients can query the Universe Server to get BasicWorldSpotInformation and get position so that user hasn't to wonder about positions
094: public Authentification(LoginInformation loginInformation,
095: int accessKind, InetAddress IP, int port,
096: Transform3D position) {
097:
098: this (loginInformation, accessKind, IP, port);
099: this .position = position;
100:
101: }
102:
103: public LoginInformation getLoginInformation() {
104:
105: return this .loginInformation;
106:
107: }
108:
109: public int getAccessKind() {
110:
111: return this .accessKind;
112:
113: }
114:
115: public InetAddress getIP() {
116:
117: return this .IP;
118:
119: }
120:
121: public int getPort() {
122:
123: return this .port;
124:
125: }
126:
127: public Transform3D getPosition() {
128:
129: return this.position;
130:
131: }
132:
133: }
|