diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 94c5f0f96..c744240b8 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -24,8 +24,21 @@ set(LINPHONE_CXX_OBJECTS_PRIVATE_HEADER_FILES
address/address-p.h
address/address.h
c-wrapper/c-tools.h
+ call/call.h
chat/chat-room-p.h
chat/chat-room.h
+ conference/conference.h
+ conference/conference-listener.h
+ conference/conference-p.h
+ conference/local-conference.h
+ conference/params/call-session-params.h
+ conference/params/call-session-params-p.h
+ conference/params/media-session-params.h
+ conference/participant.h
+ conference/remote-conference.h
+ conference/session/call-session.h
+ conference/session/call-session-p.h
+ conference/session/media-session.h
content/content.h
core/core.h
chat/imdn.h
@@ -66,11 +79,20 @@ set(LINPHONE_CXX_OBJECTS_SOURCE_FILES
address/address.cpp
c-wrapper/api/c-address.cpp
c-wrapper/api/c-event-log.cpp
+ call/call.cpp
chat/chat-room.cpp
content/content.cpp
core/core.cpp
chat/imdn.cpp
chat/is-composing.cpp
+ conference/conference.cpp
+ conference/local-conference.cpp
+ conference/params/call-session-params.cpp
+ conference/params/media-session-params.cpp
+ conference/participant.cpp
+ conference/remote-conference.cpp
+ conference/session/call-session.cpp
+ conference/session/media-session.cpp
cpim/header/cpim-core-headers.cpp
cpim/header/cpim-generic-header.cpp
cpim/header/cpim-header.cpp
diff --git a/src/call/call.cpp b/src/call/call.cpp
new file mode 100644
index 000000000..b5c8d88e9
--- /dev/null
+++ b/src/call/call.cpp
@@ -0,0 +1,54 @@
+/*
+ * call.cpp
+ * Copyright (C) 2017 Belledonne Communications SARL
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "object/object-p.h"
+
+#include "call.h"
+
+using namespace std;
+
+using namespace LinphonePrivate;
+
+// =============================================================================
+
+class Call::CallPrivate : public ObjectPrivate {
+public:
+ LinphoneCallDir direction;
+ LinphoneCallState state = LinphoneCallIdle;
+};
+
+// =============================================================================
+
+Call::Call::Call (LinphoneCallDir direction) : Object(*new CallPrivate) {
+ L_D(Call);
+ d->direction = direction;
+}
+
+// -----------------------------------------------------------------------------
+
+LinphoneCallDir Call::Call::getDirection () const {
+ L_D(const Call);
+ return d->direction;
+}
+
+// -----------------------------------------------------------------------------
+
+LinphoneCallState Call::Call::getState () const {
+ L_D(const Call);
+ return d->state;
+}
diff --git a/src/call/call.h b/src/call/call.h
new file mode 100644
index 000000000..03c6af06a
--- /dev/null
+++ b/src/call/call.h
@@ -0,0 +1,46 @@
+/*
+ * call.h
+ * Copyright (C) 2017 Belledonne Communications SARL
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef _CALL_CALL_H_
+#define _CALL_CALL_H_
+
+#include "linphone/types.h"
+
+#include "object/object.h"
+
+// =============================================================================
+
+namespace LinphonePrivate {
+ namespace Call {
+ class CallPrivate;
+
+ class Call : public Object {
+ public:
+ Call (LinphoneCallDir direction);
+
+ LinphoneCallDir getDirection() const;
+ LinphoneCallState getState() const;
+
+ private:
+ L_DECLARE_PRIVATE(Call);
+ L_DISABLE_COPY(Call);
+ };
+ }
+}
+
+#endif // ifndef _CALL_CALL_H_
diff --git a/src/chat/chat-room.cpp b/src/chat/chat-room.cpp
index 3aeac16d8..72d37c6ca 100644
--- a/src/chat/chat-room.cpp
+++ b/src/chat/chat-room.cpp
@@ -995,3 +995,4 @@ const LinphoneAddress *ChatRoom::getPeerAddress () const {
}
LINPHONE_END_NAMESPACE
+
diff --git a/src/chat/chat-room.h b/src/chat/chat-room.h
index 9584b3304..d3052d711 100644
--- a/src/chat/chat-room.h
+++ b/src/chat/chat-room.h
@@ -68,3 +68,4 @@ private:
LINPHONE_END_NAMESPACE
#endif // ifndef _CHAT_ROOM_H_
+
diff --git a/src/conference/conference-listener.h b/src/conference/conference-listener.h
new file mode 100644
index 000000000..80d312395
--- /dev/null
+++ b/src/conference/conference-listener.h
@@ -0,0 +1,37 @@
+/*
+ * conference-listener.h
+ * Copyright (C) 2017 Belledonne Communications SARL
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef _CONFERENCE_LISTENER_H_
+#define _CONFERENCE_LISTENER_H_
+
+// =============================================================================
+
+LINPHONE_BEGIN_NAMESPACE
+
+class ConferenceListener : public Object {
+public:
+ virtual void conferenceCreated (LinphoneAddress *addr) = 0;
+ virtual void conferenceTerminated (LinphoneAddress *addr) = 0;
+ virtual void participantAdded (LinphoneAddress *addr) = 0;
+ virtual void participantRemoved (LinphoneAddress *addr) = 0;
+ virtual void participantSetAdmin (LinphoneAddress *addr, bool isAdmin) = 0;
+};
+
+LINPHONE_END_NAMESPACE
+
+#endif // ifndef _CONFERENCE_LISTENER_H_
diff --git a/src/conference/conference-p.h b/src/conference/conference-p.h
new file mode 100644
index 000000000..7584b8ebf
--- /dev/null
+++ b/src/conference/conference-p.h
@@ -0,0 +1,43 @@
+/*
+ * conference-p.h
+ * Copyright (C) 2017 Belledonne Communications SARL
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef _CONFERENCE_P_H_
+#define _CONFERENCE_P_H_
+
+#include "object/object-p.h"
+
+#include "conference.h"
+
+#include
+
+// =============================================================================
+
+LINPHONE_BEGIN_NAMESPACE
+
+class ConferencePrivate : public ObjectPrivate {
+public:
+ virtual ~ConferencePrivate () = default;
+
+ std::string confId;
+
+ L_DECLARE_PUBLIC(Conference);
+};
+
+LINPHONE_END_NAMESPACE
+
+#endif // ifndef _CONFERENCE_P_H_
diff --git a/src/conference/conference.cpp b/src/conference/conference.cpp
new file mode 100644
index 000000000..b5072d3e9
--- /dev/null
+++ b/src/conference/conference.cpp
@@ -0,0 +1,29 @@
+/*
+ * conference.cpp
+ * Copyright (C) 2017 Belledonne Communications SARL
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "conference-p.h"
+
+#include "conference.h"
+
+LINPHONE_BEGIN_NAMESPACE
+
+// =============================================================================
+
+Conference::Conference (ConferencePrivate &p) : Object(p) {}
+
+LINPHONE_END_NAMESPACE
diff --git a/src/conference/conference.h b/src/conference/conference.h
new file mode 100644
index 000000000..aa76a0cde
--- /dev/null
+++ b/src/conference/conference.h
@@ -0,0 +1,44 @@
+/*
+ * conference.h
+ * Copyright (C) 2017 Belledonne Communications SARL
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef _CONFERENCE_H_
+#define _CONFERENCE_H_
+
+#include "object/object.h"
+
+// =============================================================================
+
+LINPHONE_BEGIN_NAMESPACE
+
+class ConferencePrivate;
+
+class Conference : public Object {
+public:
+ Conference ();
+
+protected:
+ explicit Conference (ConferencePrivate &p);
+
+private:
+ L_DECLARE_PRIVATE(Conference);
+ L_DISABLE_COPY(Conference);
+};
+
+LINPHONE_END_NAMESPACE
+
+#endif // ifndef _CONFERENCE_H_
diff --git a/src/conference/local-conference.cpp b/src/conference/local-conference.cpp
new file mode 100644
index 000000000..c330e5e5b
--- /dev/null
+++ b/src/conference/local-conference.cpp
@@ -0,0 +1,35 @@
+/*
+ * local-conference.cpp
+ * Copyright (C) 2017 Belledonne Communications SARL
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "conference-p.h"
+
+#include "local-conference.h"
+
+LINPHONE_BEGIN_NAMESPACE
+
+// =============================================================================
+
+class LocalConferencePrivate : public ConferencePrivate {
+public:
+};
+
+// =============================================================================
+
+LocalConference::LocalConference () : Conference(*new LocalConferencePrivate) {}
+
+LINPHONE_END_NAMESPACE
diff --git a/src/conference/local-conference.h b/src/conference/local-conference.h
new file mode 100644
index 000000000..7ff04d176
--- /dev/null
+++ b/src/conference/local-conference.h
@@ -0,0 +1,41 @@
+/*
+ * local-conference.h
+ * Copyright (C) 2017 Belledonne Communications SARL
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef _LOCAL_CONFERENCE_H_
+#define _LOCAL_CONFERENCE_H_
+
+#include "conference.h"
+
+// =============================================================================
+
+LINPHONE_BEGIN_NAMESPACE
+
+class LocalConferencePrivate;
+
+class LocalConference : public Conference {
+public:
+ LocalConference ();
+
+private:
+ L_DECLARE_PRIVATE(LocalConference);
+ L_DISABLE_COPY(LocalConference);
+};
+
+LINPHONE_END_NAMESPACE
+
+#endif // ifndef _LOCAL_CONFERENCE_H_
diff --git a/src/conference/params/call-session-params-p.h b/src/conference/params/call-session-params-p.h
new file mode 100644
index 000000000..0ff9181e1
--- /dev/null
+++ b/src/conference/params/call-session-params-p.h
@@ -0,0 +1,43 @@
+/*
+ * call-session-params-p.h
+ * Copyright (C) 2017 Belledonne Communications SARL
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef _CONFERENCE_CALL_SESSION_PARAMS_P_H_
+#define _CONFERENCE_CALL_SESSION_PARAMS_P_H_
+
+#include "object/object-p.h"
+
+#include "call-session-params.h"
+
+#include "linphone/types.h"
+
+// =============================================================================
+
+namespace LinphonePrivate {
+ namespace Conference {
+ class CallSessionParamsPrivate : public ObjectPrivate {
+ public:
+ virtual ~CallSessionParamsPrivate () = default;
+
+ LinphonePrivacyMask privacy = LinphonePrivacyNone;
+
+ L_DECLARE_PUBLIC(CallSessionParams);
+ };
+ }
+}
+
+#endif // ifndef _CONFERENCE_CALL_SESSION_PARAMS_P_H_
diff --git a/src/conference/params/call-session-params.cpp b/src/conference/params/call-session-params.cpp
new file mode 100644
index 000000000..bfab89a94
--- /dev/null
+++ b/src/conference/params/call-session-params.cpp
@@ -0,0 +1,27 @@
+/*
+ * call-session-params.cpp
+ * Copyright (C) 2017 Belledonne Communications SARL
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "call-session-params-p.h"
+
+#include "call-session-params.h"
+
+using namespace LinphonePrivate;
+
+// =============================================================================
+
+Conference::CallSessionParams::CallSessionParams (CallSessionParamsPrivate &p) : Object(p) {}
diff --git a/src/conference/params/call-session-params.h b/src/conference/params/call-session-params.h
new file mode 100644
index 000000000..8414987f6
--- /dev/null
+++ b/src/conference/params/call-session-params.h
@@ -0,0 +1,44 @@
+/*
+ * call-session-params.h
+ * Copyright (C) 2017 Belledonne Communications SARL
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef _CONFERENCE_CALL_SESSION_PARAMS_H_
+#define _CONFERENCE_CALL_SESSION_PARAMS_H_
+
+#include "object/object.h"
+
+// =============================================================================
+
+namespace LinphonePrivate {
+ namespace Conference {
+ class CallSessionParamsPrivate;
+
+ class CallSessionParams : public Object {
+ public:
+ CallSessionParams ();
+
+ protected:
+ explicit CallSessionParams (CallSessionParamsPrivate &p);
+
+ private:
+ L_DECLARE_PRIVATE(CallSessionParams);
+ L_DISABLE_COPY(CallSessionParams);
+ };
+ }
+}
+
+#endif // ifndef _CONFERENCE_CALL_SESSION_PARAMS_H_
diff --git a/src/conference/params/media-session-params.cpp b/src/conference/params/media-session-params.cpp
new file mode 100644
index 000000000..028b04bfe
--- /dev/null
+++ b/src/conference/params/media-session-params.cpp
@@ -0,0 +1,36 @@
+/*
+ * media-session-params.cpp
+ * Copyright (C) 2017 Belledonne Communications SARL
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "call-session-params-p.h"
+
+#include "media-session-params.h"
+
+#include "linphone/types.h"
+
+using namespace LinphonePrivate;
+
+// =============================================================================
+
+class Conference::MediaSessionParamsPrivate : public CallSessionParamsPrivate {
+public:
+ LinphoneMediaEncryption encryption = LinphoneMediaEncryptionNone;
+};
+
+// =============================================================================
+
+Conference::MediaSessionParams::MediaSessionParams () : CallSessionParams(*new MediaSessionParamsPrivate) {}
diff --git a/src/conference/params/media-session-params.h b/src/conference/params/media-session-params.h
new file mode 100644
index 000000000..6b9ef351c
--- /dev/null
+++ b/src/conference/params/media-session-params.h
@@ -0,0 +1,41 @@
+/*
+ * media-session-params.h
+ * Copyright (C) 2017 Belledonne Communications SARL
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef _CONFERENCE_MEDIA_SESSION_PARAMS_H_
+#define _CONFERENCE_MEDIA_SESSION_PARAMS_H_
+
+#include "call-session-params.h"
+
+// =============================================================================
+
+namespace LinphonePrivate {
+ namespace Conference {
+ class MediaSessionParamsPrivate;
+
+ class MediaSessionParams : public CallSessionParams {
+ public:
+ MediaSessionParams ();
+
+ private:
+ L_DECLARE_PRIVATE(MediaSessionParams);
+ L_DISABLE_COPY(MediaSessionParams);
+ };
+ }
+}
+
+#endif // ifndef _CONFERENCE_MEDIA_SESSION_PARAMS_H_
diff --git a/src/conference/participant.cpp b/src/conference/participant.cpp
new file mode 100644
index 000000000..c636c1e6d
--- /dev/null
+++ b/src/conference/participant.cpp
@@ -0,0 +1,65 @@
+/*
+ * participant.cpp
+ * Copyright (C) 2017 Belledonne Communications SARL
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "object/object-p.h"
+
+#include "participant.h"
+
+using namespace std;
+
+LINPHONE_BEGIN_NAMESPACE
+
+// =============================================================================
+
+class ParticipantPrivate : public ObjectPrivate {
+public:
+ ~ParticipantPrivate ();
+
+ Address addr;
+ bool isAdmin = false;
+};
+
+ParticipantPrivate::~ParticipantPrivate() {}
+
+// =============================================================================
+
+Participant::Participant (const Address &addr) : Object(*new ParticipantPrivate) {
+ L_D(Participant);
+ d->addr = addr;
+}
+
+// -----------------------------------------------------------------------------
+
+const Address& Participant::getAddress () const {
+ L_D(const Participant);
+ return d->addr;
+}
+
+// -----------------------------------------------------------------------------
+
+bool Participant::isAdmin () const {
+ L_D(const Participant);
+ return d->isAdmin;
+}
+
+void Participant::setAdmin (bool isAdmin) {
+ L_D(Participant);
+ d->isAdmin = isAdmin;
+}
+
+LINPHONE_END_NAMESPACE
diff --git a/src/conference/participant.h b/src/conference/participant.h
new file mode 100644
index 000000000..8a6ce2bca
--- /dev/null
+++ b/src/conference/participant.h
@@ -0,0 +1,48 @@
+/*
+ * participant.h
+ * Copyright (C) 2017 Belledonne Communications SARL
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef _PARTICIPANT_H_
+#define _PARTICIPANT_H_
+
+#include "address/address.h"
+
+#include "object/object.h"
+
+// =============================================================================
+
+LINPHONE_BEGIN_NAMESPACE
+
+class ParticipantPrivate;
+
+class Participant : public Object {
+public:
+ Participant (const Address &addr);
+
+ const Address& getAddress () const;
+
+ bool isAdmin () const;
+ void setAdmin (bool isAdmin);
+
+private:
+ L_DECLARE_PRIVATE(Participant);
+ L_DISABLE_COPY(Participant);
+};
+
+LINPHONE_END_NAMESPACE
+
+#endif // ifndef _PARTICIPANT_H_
diff --git a/src/conference/remote-conference.cpp b/src/conference/remote-conference.cpp
new file mode 100644
index 000000000..d73e2a17a
--- /dev/null
+++ b/src/conference/remote-conference.cpp
@@ -0,0 +1,35 @@
+/*
+ * remote-conference.cpp
+ * Copyright (C) 2017 Belledonne Communications SARL
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "conference-p.h"
+
+#include "remote-conference.h"
+
+LINPHONE_BEGIN_NAMESPACE
+
+// =============================================================================
+
+class RemoteConferencePrivate : public ConferencePrivate {
+public:
+};
+
+// =============================================================================
+
+RemoteConference::RemoteConference () : Conference(*new RemoteConferencePrivate) {}
+
+LINPHONE_END_NAMESPACE
diff --git a/src/conference/remote-conference.h b/src/conference/remote-conference.h
new file mode 100644
index 000000000..f6f456936
--- /dev/null
+++ b/src/conference/remote-conference.h
@@ -0,0 +1,41 @@
+/*
+ * remote-conference.h
+ * Copyright (C) 2017 Belledonne Communications SARL
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef _REMOTE_CONFERENCE_H_
+#define _REMOTE_CONFERENCE_H_
+
+#include "conference.h"
+
+// =============================================================================
+
+LINPHONE_BEGIN_NAMESPACE
+
+class RemoteConferencePrivate;
+
+class RemoteConference : public Conference {
+public:
+ RemoteConference ();
+
+private:
+ L_DECLARE_PRIVATE(RemoteConference);
+ L_DISABLE_COPY(RemoteConference);
+};
+
+LINPHONE_END_NAMESPACE
+
+#endif // ifndef _REMOTE_CONFERENCE_H_
diff --git a/src/conference/session/call-session-p.h b/src/conference/session/call-session-p.h
new file mode 100644
index 000000000..e74d5b4a8
--- /dev/null
+++ b/src/conference/session/call-session-p.h
@@ -0,0 +1,43 @@
+/*
+ * call-session-p.h
+ * Copyright (C) 2017 Belledonne Communications SARL
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef _CALL_SESSION_P_H_
+#define _CALL_SESSION_P_H_
+
+#include "object/object-p.h"
+
+#include "call-session.h"
+
+#include "bellesip_sal/sal_impl.h"
+
+// =============================================================================
+
+LINPHONE_BEGIN_NAMESPACE
+
+class CallSessionPrivate : public ObjectPrivate {
+public:
+ virtual ~CallSessionPrivate () = default;
+
+ SalOp *op;
+
+ L_DECLARE_PUBLIC(CallSession);
+};
+
+LINPHONE_END_NAMESPACE
+
+#endif // ifndef _CALL_SESSION_P_H_
diff --git a/src/conference/session/call-session.cpp b/src/conference/session/call-session.cpp
new file mode 100644
index 000000000..1bae79848
--- /dev/null
+++ b/src/conference/session/call-session.cpp
@@ -0,0 +1,29 @@
+/*
+ * call-session.cpp
+ * Copyright (C) 2017 Belledonne Communications SARL
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "call-session-p.h"
+
+#include "call-session.h"
+
+LINPHONE_BEGIN_NAMESPACE
+
+// =============================================================================
+
+CallSession::CallSession (CallSessionPrivate &p) : Object(p) {}
+
+LINPHONE_END_NAMESPACE
diff --git a/src/conference/session/call-session.h b/src/conference/session/call-session.h
new file mode 100644
index 000000000..fb6e9de78
--- /dev/null
+++ b/src/conference/session/call-session.h
@@ -0,0 +1,44 @@
+/*
+ * call-session.h
+ * Copyright (C) 2017 Belledonne Communications SARL
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef _CALL_SESSION_H_
+#define _CALL_SESSION_H_
+
+#include "object/object.h"
+
+// =============================================================================
+
+LINPHONE_BEGIN_NAMESPACE
+
+class CallSessionPrivate;
+
+class CallSession : public Object {
+public:
+ CallSession ();
+
+protected:
+ explicit CallSession (CallSessionPrivate &p);
+
+private:
+ L_DECLARE_PRIVATE(CallSession);
+ L_DISABLE_COPY(CallSession);
+};
+
+LINPHONE_END_NAMESPACE
+
+#endif // ifndef _CALL_SESSION_H_
diff --git a/src/conference/session/media-session.cpp b/src/conference/session/media-session.cpp
new file mode 100644
index 000000000..0b4faf9ad
--- /dev/null
+++ b/src/conference/session/media-session.cpp
@@ -0,0 +1,41 @@
+/*
+ * media-session.cpp
+ * Copyright (C) 2017 Belledonne Communications SARL
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "call-session-p.h"
+
+#include "media-session.h"
+
+#include
+
+LINPHONE_BEGIN_NAMESPACE
+
+// =============================================================================
+
+class MediaSessionPrivate : public CallSessionPrivate {
+public:
+ AudioStream *audioStream = nullptr;
+ VideoStream *videoStream = nullptr;
+ TextStream *textStream = nullptr;
+ IceSession *iceSession = nullptr;
+};
+
+// =============================================================================
+
+MediaSession::MediaSession () : CallSession(*new MediaSessionPrivate) {}
+
+LINPHONE_END_NAMESPACE
diff --git a/src/conference/session/media-session.h b/src/conference/session/media-session.h
new file mode 100644
index 000000000..898ad283b
--- /dev/null
+++ b/src/conference/session/media-session.h
@@ -0,0 +1,41 @@
+/*
+ * media-session.h
+ * Copyright (C) 2017 Belledonne Communications SARL
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef _MEDIA_SESSION_H_
+#define _MEDIA_SESSION_H_
+
+#include "call-session.h"
+
+// =============================================================================
+
+LINPHONE_BEGIN_NAMESPACE
+
+class MediaSessionPrivate;
+
+class MediaSession : public CallSession {
+public:
+ MediaSession ();
+
+private:
+ L_DECLARE_PRIVATE(MediaSession);
+ L_DISABLE_COPY(MediaSession);
+};
+
+LINPHONE_END_NAMESPACE
+
+#endif // ifndef _MEDIA_SESSION_H_