EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
StationService.cpp
Go to the documentation of this file.
1 /*
2  ------------------------------------------------------------------------------------
3  LICENSE:
4  ------------------------------------------------------------------------------------
5  This file is part of EVEmu: EVE Online Server Emulator
6  Copyright 2006 - 2021 The EVEmu Team
7  For the latest information visit https://evemu.dev
8  ------------------------------------------------------------------------------------
9  This program is free software; you can redistribute it and/or modify it under
10  the terms of the GNU Lesser General Public License as published by the Free Software
11  Foundation; either version 2 of the License, or (at your option) any later
12  version.
13 
14  This program is distributed in the hope that it will be useful, but WITHOUT
15  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16  FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
17 
18  You should have received a copy of the GNU Lesser General Public License along with
19  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
20  Place - Suite 330, Boston, MA 02111-1307, USA, or go to
21  http://www.gnu.org/copyleft/lesser.txt.
22  ------------------------------------------------------------------------------------
23  Author: Zhur
24 */
25 
26 #include "eve-server.h"
27 
28 #include "EntityList.h"
29 #include "PyServiceCD.h"
30 #include "station/StationService.h"
31 
33 
35 : PyService(mgr, "station"),
36  m_dispatch(new Dispatcher(this))
37 {
38  _SetCallDispatcher(m_dispatch);
39 
41  PyCallable_REG_CALL(StationService, GetSolarSystem);
42 }
43 
45  delete m_dispatch;
46 }
47 
48 PyResult StationService::Handle_GetSolarSystem(PyCallArgs &call) {
49  Call_SingleIntegerArg arg;
50  if (!arg.Decode(&call.tuple)) {
51  codelog(SERVICE__ERROR, "%s: Failed to decode arguments.", GetName());
52  return nullptr;
53  }
54 
55  // this needs to return some cache status?
56  return new PyObject("util.CachedObject", new PyInt(arg.arg));
57 }
58 
59 PyResult StationService::Handle_GetGuests(PyCallArgs &call) {
60  std::vector<Client*> clients;
61  clients.clear();
62  sEntityList.GetStationGuestList(call.client->GetStationID(), clients);
63  PyList* res = new PyList();
64  for (auto cur : clients) {
65  PyTuple* t = new PyTuple(4);
66  t->items[0] = new PyInt(cur->GetCharacterID());
67  t->items[1] = new PyInt(cur->GetCorporationID());
68  t->items[2] = new PyInt(cur->GetAllianceID());
69  t->items[3] = new PyInt(cur->GetWarFactionID());
70  res->AddItem(t);
71  }
72 
73  return res;
74 }
Dispatcher *const m_dispatch
PyCallable_Make_InnerDispatcher(StationService) StationService
virtual ~StationService()
#define sEntityList
Definition: EntityList.h:208
Python tuple.
Definition: PyRep.h:567
const char * GetName() const
Definition: PyService.h:54
void AddItem(PyRep *i)
Definition: PyRep.h:701
Python object.
Definition: PyRep.h:826
#define codelog(type, fmt,...)
Definition: logsys.h:128
Python integer.
Definition: PyRep.h:231
Client *const client
Definition: PyCallable.h:49
#define PyCallable_REG_CALL(c, m)
Definition: PyServiceCD.h:78
int32 GetStationID() const
Definition: Client.h:114
storage_type items
Definition: PyRep.h:628
Python list.
Definition: PyRep.h:639
Dispatcher *const m_dispatch
PyTuple * tuple
Definition: PyCallable.h:50