| Home Page | Recent Changes | Preferences

Session

UT2003 :: Object >> Session (Ladder1.46)
00001  class Session extends Object within SessionMaster
00002      transient;
00003  
00004  //-----------------------------------------------------------
00005  // Ladder.Session
00006  // Sessions concept by El_Muerte[TDS]
00007  // http://wiki.beyondunreal.com/wiki/Sessions
00008  //
00009  // Data container used by webadmin - tracked by SessionMaster
00010  // Session "hashes" (10 digit number unique to each Session object)
00011  // are generated by SessionMaster at server startup
00012  //
00013  // Session hashes are passed via form submittal, often taking advantage
00014  // of the Webserver's ability to parse directly injected form labels
00015  // (?VarName=VarValue)
00016  //
00017  // Session hashes are queried from the WebRequest object
00018  // each connection - this allows easy access to unlimited amounts
00019  // of related data across the entire class, without risking corruption
00020  // across threads (such as would be the case with global variables)
00021  //-----------------------------------------------------------
00022  
00023  struct SessionData
00024  {
00025      var string Key;
00026      var string Value;
00027  };
00028  
00029  struct SessionMap
00030  {
00031      var string MapName;
00032      var int MapListOrder;
00033      var bool bRequired;
00034  };
00035  
00036  struct SessionMutator
00037  {
00038      var string MutatorName;
00039      var bool bRequired;
00040  };
00041  
00042  struct SessionServerActor
00043  {
00044      var string  SAName;
00045      var bool    bRequired;
00046  };
00047  
00048  // contains the ProfileConfigSet that this session applies to
00049  var private ProfileConfigSet PCS;
00050  
00051  // contains the data for this session
00052  var private array<SessionData>          Data;
00053  var private array<SessionMutator>       Mutators;
00054  var private array<SessionMap>           Maps;
00055  var private array<SessionServerActor>   ServerActors;
00056  
00057  // contains the unique identifier
00058  var private string hash;
00059  
00060  // Input functions
00061  final function bool SetHash(string NewHash)
00062  {
00063      if (NewHash!="")
00064      {
00065          Hash = NewHash;
00066          return true;
00067      }
00068  
00069      return false;
00070  }
00071  
00072  function bool SetPCS(ProfileConfigSet TempPCS)
00073  {
00074      if (TempPCS != None)
00075      {
00076          PCS = TempPCS;
00077          return true;
00078      }
00079  
00080      return false;
00081  }
00082  
00083  function bool setValue(string Dataname, string value, bool bAddIfNotExists, optional out string oldValue)
00084  {
00085      local int i;
00086      local SessionData KVP;
00087  
00088      for (i = 0; i<data.length; i++)
00089      {
00090          if (data[i].key ~= Dataname)
00091          {
00092              oldValue = data[i].value;
00093              data[i].value = value;
00094              return true;
00095          }
00096      }
00097  
00098      if (bAddIfNotExists)
00099      {
00100          KVP.Key = DataName;
00101          KVP.Value = Value;
00102          Data[Data.Length] = KVP;
00103          return true;
00104      }
00105      return false;
00106  }
00107  
00108  function bool setMutator(string NewMutator, bool bAddIfNotExists, optional bool bRequired)
00109  {
00110      local int i;
00111      local SessionMutator tmp;
00112  
00113      for (i=0;i<Mutators.Length;i++)
00114      {
00115          if (Mutators[i].MutatorName ~= NewMutator)
00116          {
00117              Mutators[i].bRequired = bRequired;
00118              return true;
00119          }
00120      }
00121  
00122      if (bAddIfNotExists)
00123      {
00124          tmp.MutatorName = NewMutator;
00125          tmp.bRequired = bRequired;
00126          Mutators[Mutators.Length] = tmp;
00127          return true;
00128      }
00129  
00130      return false;
00131  }
00132  
00133  function bool setMap(string NewMap, int NewOrder, bool bAddIfNotExists, optional bool bRequired)
00134  {
00135      local int i;
00136      local SessionMap tmp;
00137  
00138      for (i=0;i<Maps.Length;i++)
00139      {
00140          if (Maps[i].MapName ~= NewMap)
00141          {
00142              Maps[i].MapListOrder = NewOrder;
00143              Maps[i].bRequired = bRequired;
00144              return true;
00145          }
00146      }
00147  
00148      if (bAddIfNotExists)
00149      {
00150          tmp.MapName = NewMap;
00151          tmp.bRequired = bRequired;
00152          tmp.MapListOrder = NewOrder;
00153          Maps[Maps.Length] = tmp;
00154          return true;
00155      }
00156      return false;
00157  }
00158  
00159  function bool SetServerActor(string NewActor, bool bAddIfNotExists, optional bool bRequired)
00160  {
00161      local int i;
00162      local SessionServerActor tmp;
00163  
00164      for (i=0;i<ServerActors.Length;i++)
00165      {
00166          if (ServerActors[i].SAName ~= NewActor)
00167          {
00168              ServerActors[i].bRequired = bRequired;
00169              return true;
00170          }
00171      }
00172  
00173      if (bAddIfNotExists)
00174      {
00175          tmp.SAName = NewActor;
00176          tmp.bRequired = bRequired;
00177  
00178          ServerActors[ServerActors.Length] = tmp;
00179          return true;
00180      }
00181  
00182      return false;
00183  }
00184  
00185  // Output functions
00186  final function string GetHash()
00187  {
00188      return Hash;
00189  }
00190  
00191  function ProfileConfigSet GetPCS()
00192  {
00193      if (PCS != None)
00194          return PCS;
00195  
00196      return None;
00197  }
00198  
00199  function int getIdValue(int idx, out string DataName, out string DataValue)
00200  {
00201      if (idx < 0 || idx >= Data.Length)
00202          return -1;
00203  
00204      DataName = Data[idx].Key;
00205      DataValue = Data[idx].Value;
00206      return idx;
00207  }
00208  
00209  function string getValue(string name, optional string sdefault)
00210  {
00211      local int i;
00212      for (i = 0; i<data.length; i++)
00213          if (data[i].key == name) return data[i].value;
00214  
00215      return sdefault;
00216  }
00217  
00218  function string getMutator(int idx)
00219  {
00220      if (idx < 0 || idx >= Mutators.Length)
00221          return "";
00222  
00223      return Mutators[idx].MutatorName;
00224  }
00225  
00226  function string getMap(int idx)
00227  {
00228      if (idx < 0 || idx >= Maps.Length)
00229          return "";
00230  
00231      return Maps[idx].MapName;
00232  }
00233  
00234  function string getServerActor(int idx)
00235  {
00236      if (idx < 0 || idx >= ServerActors.Length)
00237          return "";
00238  
00239      return ServerActors[idx].SAName;
00240  }
00241  
00242  // Maintenance
00243  final function ClearMutators()
00244  {
00245      Mutators.Length = 0;
00246  }
00247  
00248  final function ClearMaps()
00249  {
00250      Maps.Length = 0;
00251  }
00252  
00253  final function ClearData()
00254  {
00255      Data.Length = 0;
00256  }
00257  
00258  final function ClearServerActors()
00259  {
00260      ServerActors.Length = 0;
00261  }
00262  
00263  function bool delValue(string DataName)
00264  {
00265      local int i;
00266  
00267      for (i=0;i<Data.Length;i++)
00268      {
00269          if (Data[i].Key ~= DataName)
00270          {
00271              Data.Remove(i,1);
00272              return true;
00273          }
00274      }
00275  
00276      return false;
00277  }
00278  
00279  function bool delMap(string MapName)
00280  {
00281      local int i;
00282  
00283      for (i=0;i<Maps.Length;i++)
00284      {
00285          if (Maps[i].MapName ~= MapName)
00286          {
00287              Maps.Remove(i,1);
00288              return true;
00289          }
00290      }
00291  
00292      return false;
00293  }
00294  
00295  function bool delMutator(string Mutator)
00296  {
00297      local int i;
00298  
00299      for (i=0;i<Mutators.Length;i++)
00300      {
00301          if (Mutators[i].MutatorName ~= Mutator)
00302          {
00303              Mutators.Remove(i,1);
00304              return true;
00305          }
00306      }
00307  
00308      return false;
00309  }
00310  
00311  function bool delServerActor(string ActorName)
00312  {
00313      local int i;
00314      for (i=0;i<ServerActors.Length;i++)
00315      {
00316          if (ServerActors[i].SAName ~= ActorName)
00317          {
00318              ServerActors.Remove(i,1);
00319              return true;
00320          }
00321      }
00322      return false;
00323  }
00324  
00325  // Utility
00326  final function ResetSession()
00327  {
00328      ClearMutators();
00329      ClearMaps();
00330      ClearData();
00331      ClearServerActors();
00332  
00333      PCS = None;
00334  }
00335  
00336  final function int GetMutatorLength()
00337  {
00338      return Mutators.Length;
00339  }
00340  
00341  final function int GetDataLength()
00342  {
00343      return Data.Length;
00344  }
00345  
00346  final function int GetMapLength()
00347  {
00348      return Maps.Length;
00349  }
00350  
00351  final function int GetSALength()
00352  {
00353      return ServerActors.Length;
00354  }
00355  
00356  final function int MapOrder(int idx)
00357  {
00358      if (idx < 0 || idx >= Maps.Length)
00359          return -1;
00360  
00361      return Maps[idx].MapListOrder;
00362  }
00363  
00364  final function bool HasData(string DataName)
00365  {
00366      local int i;
00367  
00368      for (i=0;i<Data.Length;i++)
00369          if (Data[i].key ~= DataName)
00370              return true;
00371      return false;
00372  }
00373  
00374  final function bool HasMutator(string MutatorName)
00375  {
00376      local int i;
00377  
00378      for (i=0;i<Mutators.Length;i++)
00379          if (Mutators[i].MutatorName ~= MutatorName)
00380              return true;
00381      return false;
00382  }
00383  
00384  final function bool HasMap(string MapName)
00385  {
00386      local int i;
00387      for (i=0;i<Maps.Length;i++)
00388          if (Maps[i].MapName ~= MapName)
00389              return true;
00390      return false;
00391  }
00392  
00393  final function bool HasServerActor(string ActorName)
00394  {
00395      local int i;
00396      for (i=0;i<ServerActors.Length;i++)
00397          if (ServerActors[i].SAName ~= ActorName)
00398              return true;
00399      return false;
00400  }
00401  
00402  final function bool MutRequired(string MutatorName)
00403  {
00404      local int i;
00405  
00406      for (i=0;i<Mutators.Length;i++)
00407          if ((Mutators[i].MutatorName ~= MutatorName) && (Mutators[i].bRequired))
00408              return true;
00409      return false;
00410  }
00411  
00412  final function bool MapRequired(string MapName)
00413  {
00414      local int i;
00415      for (i=0;i<Maps.Length;i++)
00416          if (Maps[i].MapName ~= MapName)
00417              return Maps[i].bRequired;
00418      return false;
00419  }
00420  
00421  final function bool SARequired(string ActorName)
00422  {
00423      local int i;
00424      for (i=0;i<ServerActors.Length;i++)
00425          if (ServerActors[i].SAName ~= ActorName)
00426              return ServerActors[i].bRequired;
00427      return false;
00428  }

The Unreal Engine Documentation Site

Wiki Community

Topic Categories

Image Uploads

Random Page

Recent Changes

Offline Wiki

Unreal Engine

Console Commands

Terminology

Mapping Topics

Mapping Lessons

UnrealEd Interface

Questions&Answers

Scripting Topics

Scripting Lessons

Making Mods

Class Tree

Questions&Answers

Modeling Topics

Questions&Answers

Log In