@ServerClass.h 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /******************************************************************************/
  2. /******************************************************************************/
  3. class ServerClass : Connection
  4. {
  5. enum ACTION
  6. {
  7. NONE ,
  8. LOGIN ,
  9. REGISTER ,
  10. FORGOT_PASS,
  11. CHANGE_PASS,
  12. };
  13. bool after_connect, version_sent, version_ok, logged_in, reconnect, allow_reconnect, proj_opened, send_proj_settings;
  14. USER_ACCESS access;
  15. ACTION action;
  16. SockAddr conn_addr;
  17. Str conn_email, conn_pass, conn_name, logged_email;
  18. uint conn_pass_key, sending, rcving;
  19. long sent, rcvd, stats_sent, stats_rcvd;
  20. flt reconnect_time, stats_time;
  21. Memx<Project> projects;
  22. Memc<UID> texs; // textures available on the server
  23. ThreadSafeMap<UID, WorldVer> world_vers; // element exists only if we have received data from server (even empty), make thread-safe just in case
  24. ThreadSafeMap<UID, MiniMapVer> mini_map_vers; // element exists only if we have received data from server (even empty), make thread-safe just in case
  25. // get
  26. bool loggedIn ()C;
  27. bool canRead ()C;
  28. bool canWrite ()C;
  29. bool canWriteCode()C;
  30. bool smallBuf ()C; // if buffer usage is small
  31. long sentTotal()C;
  32. long rcvdTotal()C;
  33. // operations
  34. void clearProj();
  35. void logout();
  36. void stopConnect();
  37. void startConnect(ACTION action);
  38. void connect(SockAddr &addr, C Str &email, C Str &pass, bool allow_reconnect=false);
  39. void Register(Str name);
  40. void forgotPass(SockAddr &addr, C Str &email);
  41. void changePass(SockAddr &addr, C Str &email, C Str &new_pass, uint change_pass_key);
  42. void licenseKey (C Str &license_key );
  43. void projectOpen (C UID &proj_id, C Str &proj_name);
  44. void projectDataRequest( );
  45. void projectSetSettings( );
  46. void syncCodes ( Memc<ElmTypeVer > &elms );
  47. void syncCodes (C Memc<ElmCodeData> &elms );
  48. void newElm ( Elm &elm );
  49. void renameElm ( Elm &elm );
  50. void setElmParent ( Elm &elm );
  51. void removeElms (Memc<UID> &elms, bool removed , C TimeStamp &time);
  52. void noPublishElms(Memc<UID> &elms, bool no_publish, C TimeStamp &time);
  53. void getElmNames (Memc<UID> &elms );
  54. void getTextures (Memc<UID> &texs );
  55. void getElmShort (Memc<UID> &elms );
  56. void getElmLong (Memc<UID> &elms );
  57. void getElmLong ( C UID &elm_id );
  58. void setTex (C UID &tex_id); // send if it wasn't available on the server yet, this should be called everytime a texture is created in the project (OR reused in case it was created before but not yet sent because it was not used at that time)
  59. void setElmShort(C UID &elm_id); // this sets only ID TYPE DATA but no NAME, PARENT, etc.
  60. void setElmLong (C UID &elm_id); // this sets only ID TYPE DATA FILES but no NAME, PARENT, etc.
  61. void setElmFull (C UID &elm_id);
  62. void setWaypoint(C UID &world_id, C UID &waypoint_id, C Version &waypoint_ver, EditWaypoint &waypoint);
  63. void setLake (C UID &world_id, C UID & lake_id, C Version & lake_ver, Lake &lake );
  64. void setRiver (C UID &world_id, C UID & river_id, C Version & river_ver, River &river );
  65. void getWorldVer (C UID &world_id ); // request if don't have yet
  66. void getWorldAreas (C UID &world_id, Memc<AreaSync> &areas );
  67. void getWorldWaypoints(C UID &world_id, Memc<UID > &waypoints);
  68. void getWorldLakes (C UID &world_id, Memc<UID > &lakes );
  69. void getWorldRivers (C UID &world_id, Memc<UID > &rivers );
  70. void getMiniMapVer (C UID &mini_map_id ); // request if don't have yet
  71. void getMiniMapImages (C UID &mini_map_id, Memc<VecI2> &images);
  72. void setMiniMapSettings(C UID &mini_map_id, C Game::MiniMap::Settings &settings, C TimeStamp &settings_time);
  73. void update(ProjectEx *proj, bool busy);
  74. ~ServerClass();
  75. public:
  76. ServerClass();
  77. };
  78. /******************************************************************************/
  79. /******************************************************************************/
  80. extern ServerClass Server;
  81. /******************************************************************************/