Rewrite the whole IID usage
IRC users and channels are now distinguished by the separator used in the IID (% or !). ref #2468
This commit is contained in:
+50
-13
@@ -4,17 +4,40 @@
|
||||
#include <string>
|
||||
|
||||
/**
|
||||
* A name representing an IRC channel, on the same model than the XMPP JIDs (but much simpler).
|
||||
* The separator between the server and the channel name is '%'
|
||||
* #test%irc.freenode.org has :
|
||||
* - chan: "#test" (the # is part of the name, it could very well be absent, or & instead
|
||||
* - server: "irc.freenode.org"
|
||||
* #test has:
|
||||
* - chan: "#test"
|
||||
* - server: ""
|
||||
* %irc.freenode.org:
|
||||
* - chan: ""
|
||||
* - server: "irc.freenode.org"
|
||||
* A name representing an IRC channel on an IRC server, or an IRC user on an
|
||||
* IRC server, or just an IRC server.
|
||||
*
|
||||
* The separator for an user is '!', for a channel it's '%'. If no separator
|
||||
* is present, it's just an irc server.
|
||||
* It’s possible to have an empty-string server, but it makes no sense in
|
||||
* the biboumi context.
|
||||
*
|
||||
* #test%irc.example.org has :
|
||||
* - local: "#test" (the # is part of the name, it could very well be absent, or & (for example) instead)
|
||||
* - server: "irc.example.org"
|
||||
* - is_channel: true
|
||||
* - is_user: false
|
||||
*
|
||||
* %irc.example.org:
|
||||
* - local: ""
|
||||
* - server: "irc.example.org"
|
||||
* - is_channel: true
|
||||
* - is_user: false
|
||||
* Note: this is the special empty-string channel, used internal in biboumi
|
||||
* but has no meaning on IRC.
|
||||
*
|
||||
* foo!irc.example.org
|
||||
* - local: "foo"
|
||||
* - server: "irc.example.org"
|
||||
* - is_channel: false
|
||||
* - is_user: true
|
||||
* Note: the empty-string user (!irc.example.org) has no special meaning in biboumi
|
||||
*
|
||||
* irc.example.org:
|
||||
* - local: ""
|
||||
* - server: "irc.example.org"
|
||||
* - is_channel: false
|
||||
* - is_user: false
|
||||
*/
|
||||
class Iid
|
||||
{
|
||||
@@ -22,14 +45,28 @@ public:
|
||||
explicit Iid(const std::string& iid);
|
||||
explicit Iid();
|
||||
|
||||
std::string chan;
|
||||
std::string server;
|
||||
void set_local(const std::string& loc);
|
||||
void set_server(const std::string& serv);
|
||||
const std::string& get_local() const;
|
||||
const std::string& get_server() const;
|
||||
|
||||
bool is_channel;
|
||||
bool is_user;
|
||||
|
||||
std::string get_sep() const;
|
||||
|
||||
private:
|
||||
std::string local;
|
||||
std::string server;
|
||||
|
||||
Iid(const Iid&) = delete;
|
||||
Iid(Iid&&) = delete;
|
||||
Iid& operator=(const Iid&) = delete;
|
||||
Iid& operator=(Iid&&) = delete;
|
||||
};
|
||||
|
||||
namespace std {
|
||||
const std::string to_string(const Iid& iid);
|
||||
}
|
||||
|
||||
#endif // IID_INCLUDED
|
||||
|
||||
Reference in New Issue
Block a user