Creating new channel file.

This commit is contained in:
Nicolás Ortega Froysa 2017-09-20 21:02:25 +02:00
parent 9eee5b7ea5
commit 7d6cda8d1b
No known key found for this signature in database
GPG Key ID: FEC70E3BAE2E69BF
2 changed files with 61 additions and 0 deletions

View File

@ -39,6 +39,7 @@ include_directories(
SYSTEM OPENDHT_INCLUDE_DIRS) SYSTEM OPENDHT_INCLUDE_DIRS)
set(SRCS set(SRCS
src/channel.cpp
src/error.cpp src/error.cpp
src/node.cpp) src/node.cpp)

60
src/channel.cpp Normal file
View File

@ -0,0 +1,60 @@
/*
* Copyright (C) 2017 Ortega Froysa, Nicolás <nortega@themusicinnoise.net>
* Author: Ortega Froysa, Nicolás <nortega@themusicinnoise.net>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "neocomm.h"
#include "error.hpp"
#include "globals.hpp"
#include <string>
dht::DhtRunner node;
std::unordered_map<std::string, dht::InfoHash> chans;
int NeoComm_join_channel(const char *channel_name) {
if(not node.isRunning())
{
add_error("NeoComm must be initialized.");
return 0;
}
const std::string s_chan_name(channel_name);
if(s_chan_name.empty())
{
add_error("Chan name is empty.");
return 0;
}
// If it already exists then just exit
if(chans.find(s_chan_name) == chans.end())
return 1;
dht::InfoHash chan(s_chan_name);
{
static constexpr dht::InfoHash INVALID_ID {};
if(chan == INVALID_ID)
chan = dht::InfoHash::get(s_chan_name);
}
chans[s_chan_name] = chan;
return 1;
}
void NeoComm_leave_channel(const char *channel_name) {
chans.erase(std::string(channel_name));
}