#include "SMeeting.h"
#include <iostream>
class MyEngineHandler : public SMeeting::ISMeetingEngineEvent {
public:
void onDeviceChange(SMeeting::DeviceType tp, bool isadd, std::string name) override {
// Handle device changes
}
void onImEnabled(std::string uid, std::string sid) override {
// IM is enabled
}
};
class MyChannelHandler : public SMeeting::ISMeetingChannelEvent {
public:
void onDisconnected(SMeeting::DisconnectReason reason,
SMeeting::StatusCode code,
std::string message) override {
std::cout << "Disconnected: " << (int)code << std::endl;
}
void onUserEnter(std::string userdata) override {
std::cout << "User entered: " << userdata << std::endl;
}
// Implement the other callbacks you need...
};
int main() {
// Initialize the engine
SMeeting::ISMeetingEngine* engine = nullptr;
SMeeting::StatusCode ret = SMeeting::SMeetingEngine_Init(&engine);
if (ret != SMeeting::StatusCode::OK) {
return -1;
}
MyEngineHandler engine_handler;
engine->setEventHandler(&engine_handler);
// Log in
std::string token = "your_token";
engine->login(token, [&](SMeeting::StatusCode status, std::string msg) {
if (status != SMeeting::StatusCode::OK) {
return;
}
// Create a meeting
SMeeting::SMeetingCreateMeetingModel model;
model.title = "Test meeting";
engine->createRoom(model, [&](SMeeting::StatusCode status, std::string roomno) {
if (status != SMeeting::StatusCode::OK) {
return;
}
// Create the channel object
SMeeting::ISMeetingChannel* channel = nullptr;
engine->createChannel(roomno, &channel);
if (!channel) {
return;
}
MyChannelHandler channel_handler;
channel->setEventHandler(&channel_handler);
// Enter the meeting
channel->enter("", [&](SMeeting::StatusCode status, std::string msg) {
if (status == SMeeting::StatusCode::OK) {
std::cout << "Entered the meeting" << std::endl;
}
});
});
});
// Wait for the asynchronous operations to complete (a real app should have an event loop)
std::this_thread::sleep_for(std::chrono::seconds(30));
// Clean up
engine->logout();
engine->del();
return 0;
}