<commit_before>#ifndef JOINABLE_IMPL
#define JOINABLE_IMPL

#include "joinable_types.h"
#include "types/MediaObjectImpl.h"

#include <kms-core.h>

using ::com::kurento::kms::api::Joinable;
using ::com::kurento::kms::api::StreamType;
using ::com::kurento::kms::api::Direction;
using ::com::kurento::kms::api::MediaSession;

namespace com { namespace kurento { namespace kms {

class JoinableImpl : public Joinable, public virtual MediaObjectImpl {
public:
	JoinableImpl(MediaSession &session);
	~JoinableImpl() throw();

	void getStreams(std::vector<StreamType::type> &_return);

	void join(const JoinableImpl& to, const Direction direction);
	void unjoin(JoinableImpl& to);

	void join(JoinableImpl &to, const StreamType::type stream, const Direction direction);
	void unjoin(JoinableImpl &to, const StreamType::type stream);

	void getJoinees(std::vector<Joinable> &_return);
	void getJoinees(std::vector<Joinable> &_return, const Direction direction);

	void getJoinees(std::vector<Joinable> &_return, const StreamType::type stream);
	void getJoinees(std::vector<Joinable> &_return, const StreamType::type stream, const Direction direction);

protected:

	KmsEndpoint *endpoint = NULL;
	std::map<JoinableImpl *, KmsLocalConnection *> joinees;

private:

	KmsConnection* create_local_connection();
};

}}} // com::kurento::kms

#endif /* JOINABLE_IMPL */<commit_msg>Add TODO in joinableImpl header<commit_after>#ifndef JOINABLE_IMPL
#define JOINABLE_IMPL

#include "joinable_types.h"
#include "types/MediaObjectImpl.h"

#include <kms-core.h>

using ::com::kurento::kms::api::Joinable;
using ::com::kurento::kms::api::StreamType;
using ::com::kurento::kms::api::Direction;
using ::com::kurento::kms::api::MediaSession;

namespace com { namespace kurento { namespace kms {

class JoinableImpl : public Joinable, public virtual MediaObjectImpl {
public:
	JoinableImpl(MediaSession &session);
	~JoinableImpl() throw();

	void getStreams(std::vector<StreamType::type> &_return);

	void join(const JoinableImpl& to, const Direction direction);
	void unjoin(JoinableImpl& to);

	void join(JoinableImpl &to, const StreamType::type stream, const Direction direction);
	void unjoin(JoinableImpl &to, const StreamType::type stream);

	void getJoinees(std::vector<Joinable> &_return);
	void getJoinees(std::vector<Joinable> &_return, const Direction direction);

	void getJoinees(std::vector<Joinable> &_return, const StreamType::type stream);
	void getJoinees(std::vector<Joinable> &_return, const StreamType::type stream, const Direction direction);

protected:

	KmsEndpoint *endpoint = NULL;
	// TODO: Protect the list against concurrency
	std::map<JoinableImpl *, KmsLocalConnection *> joinees;

private:

	KmsConnection* create_local_connection();
};

}}} // com::kurento::kms

#endif /* JOINABLE_IMPL */
{'fraction_non_alphanumeric': 0.13469096105752054, 'fraction_numerical': 0.0, 'mean_word_length': 7.777429467084639, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4411376', 'n_tokens_mistral': 933, 'n_tokens_neox': 901, 'n_words': 212}