#include <string>
#include <sstream>
#include "inspircd_config.h"
+#include "uid.h"
#include "users.h"
#include "channels.h"
#include "socket.h"
*/
#define ETIREDHAMSTERS EAGAIN
-/**
- * This define is used in place of strcmp when we
- * want to check if a char* string contains only one
- * letter. Pretty fast, its just two compares and an
- * addition.
- */
-#define IS_SINGLE(x,y) ( (*x == y) && (*(x+1) == 0) )
-
/** Delete a pointer, and NULL its value
*/
template<typename T> inline void DELETE(T* x)
class CoreExport InspIRCd : public classbase
{
private:
+ /** Holds the current UID. Used to generate the next one.
+ */
+ char current_uid[UUID_LENGTH];
+
/** Holds a string describing the last module error to occur
*/
char MODERR[MAXBUF];
*/
int time_delta;
+#ifdef WIN32
+ IPC* WindowsIPC;
+#endif
+
public:
/** Global cull list, will be processed on next iteration
*/
std::map<InspSocket*,InspSocket*> SocketCull;
+ /** Returns the next available UID for this server.
+ */
+ std::string GetUID();
+
+ /** Find a user in the UUID hash
+ * @param nick The nickname to find
+ * @return A pointer to the user, or NULL if the user does not exist
+ */
+ userrec *FindUUID(const std::string &);
+
+ /** Find a user in the UUID hash
+ * @param nick The nickname to find
+ * @return A pointer to the user, or NULL if the user does not exist
+ */
+ userrec *FindUUID(const char *);
+
/** Build the ISUPPORT string by triggering all modules On005Numeric events
*/
void BuildISupport();
*/
user_hash* clientlist;
+ /** Client list stored by UUID. Contains all clients, and is updated
+ * automatically by the constructor and destructor of userrec.
+ */
+ user_hash* uuidlist;
+
/** Channel list, a hash_map containing all channels
*/
chan_hash* chanlist;
*/
void WriteOpers(const std::string &text);
- /** Find a nickname in the nick hash
+ /** Find a user in the nick hash.
+ * If the user cant be found in the nick hash check the uuid hash
* @param nick The nickname to find
* @return A pointer to the user, or NULL if the user does not exist
*/
userrec* FindNick(const std::string &nick);
- /** Find a nickname in the nick hash
+ /** Find a user in the nick hash.
+ * If the user cant be found in the nick hash check the uuid hash
* @param nick The nickname to find
* @return A pointer to the user, or NULL if the user does not exist
*/
userrec* FindNick(const char* nick);
+ /** Find a user in the nick hash ONLY
+ */
+ userrec* FindNickOnly(const char* nick);
+
+ /** Find a user in the nick hash ONLY
+ */
+ userrec* FindNickOnly(const std::string &nick);
+
/** Find a channel in the channels hash
* @param chan The channel to find
* @return A pointer to the channel, or NULL if the channel does not exist
/** Determine the right path for, and open, the logfile
* @param argv The argv passed to main() initially, used to calculate program path
* @param argc The argc passed to main() initially, used to calculate program path
+ * @return True if the log could be opened, false if otherwise
*/
- void OpenLog(char** argv, int argc);
+ bool OpenLog(char** argv, int argc);
/** Close the currently open log file
*/