dp_->SetDpReceivedEventHandler(this);
dp_->SetPubSubJoinedEventHandler(this);
dp_->SetPubSubleftEventHandler(this);
-
}
BroadcastChannel::Impl::~Impl() {
}
-void BroadcastChannel::Impl::AddJoinedPeerInfo(std::string ip,
+void BroadcastChannel::Impl::AddJoinedPeerInfo(std::string peer_id,
std::shared_ptr<PeerInfo> peer_info) {
-
- joined_peerinfo_map_[ip] = peer_info;
+ LOG(INFO) << "AddJoinedPeerInfo [" << peer_id << "]";
+ joined_peerinfo_map_[peer_id] = peer_info;
}
-void BroadcastChannel::Impl::RemoveJoinedPeerInfo(std::string ip) {
- auto iter = joined_peerinfo_map_.find(ip);
+void BroadcastChannel::Impl::RemoveJoinedPeerInfo(std::string peer_id) {
+ LOG(INFO) << "RemoveJoinedPeerInfo [" << peer_id << "]";
+ auto iter = joined_peerinfo_map_.find(peer_id);
if (iter == joined_peerinfo_map_.end())
return;
joined_peerinfo_map_.erase(iter);
}
-std::shared_ptr<PeerInfo> BroadcastChannel::Impl::GetJoinedPeerInfo(std::string ip) {
- auto iter = joined_peerinfo_map_.find(ip);
+void BroadcastChannel::Impl::ClearJoinedPeerInfo() {
+ joined_peerinfo_map_.clear();
+}
+
+std::shared_ptr<PeerInfo> BroadcastChannel::Impl::GetJoinedPeerInfo(std::string peer_id) {
+ LOG(INFO) << "GetJoinedPeerInfo [" << peer_id << "]";
+ auto iter = joined_peerinfo_map_.find(peer_id);
if (iter == joined_peerinfo_map_.end())
return nullptr;
return iter->second;
}
-void BroadcastChannel::Impl::OnJoined(VineDpPtr dp, std::string ip, int port) {
- LOG(INFO)<< "OnJoined " << topic_ << "[" << dp_->GetPort() << "] - "
- << ip << ":" << port;
-
+void BroadcastChannel::Impl::OnJoined(VineDpPtr dp, std::string peer_id) {
+ LOG(INFO)<< "OnJoined " << topic_ << "[" << dp_->GetPeerId() << "] [" << peer_id << "]";
tizen_base::Parcel parcel;
- parcel.WriteUInt32(cmd::CionCmd::PeerInfo);
- std::string ip_info = dp_->GetIP() + std::string(":") + std::to_string(dp_->GetPort());
- parcel.WriteString(ip_info);
+ parcel.WriteUInt32(cmd::CionCmd::PeerInfo);
+ parcel.WriteString(dp_->GetPeerId());
std::vector<uint8_t> peer = my_peer_info_->Serialize();
if (peer.size() == 0) {
LOG(ERROR) << "fail to serialize peer info";
dp_->SendDataAsync(parcel.GetRaw());
}
-void BroadcastChannel::Impl::OnLeft(VineDpPtr dp, std::string ip, int port) {
- LOG(INFO)<< "OnLeft " << topic_ << " - " << ip << ":" << port;
+void BroadcastChannel::Impl::OnLeft(VineDpPtr dp, std::string peer_id) {
+ LOG(INFO)<< "OnLeft " << topic_ << " - " << peer_id;
auto parcel = std::make_shared<tizen_base::Parcel>();
- parcel->WriteString(ip + std::string(":") + std::to_string(port));
+
+ parcel->WriteString(peer_id);
ChannelJob<BroadcastChannel> job(parent_, parcel);
operation_queue_.Push(job);
- g_idle_add_full(G_PRIORITY_HIGH,
+ g_idle_add_full(G_PRIORITY_HIGH,
[](gpointer data) -> gboolean {
BroadcastChannel::Impl* self =
static_cast<BroadcastChannel::Impl*>(data);
self->operation_queue_.TryAndPop(job);
auto parcel = job.GetParcel();
- std::string ip = parcel->ReadString();
- auto peer_info = self->GetJoinedPeerInfo(ip);
+ std::string peer_id = parcel->ReadString();
+ auto peer_info = self->GetJoinedPeerInfo(peer_id);
if (peer_info == nullptr)
return G_SOURCE_REMOVE;
self->parent_->OnLeft(peer_info, self->topic_);
-
- self->RemoveJoinedPeerInfo(ip);
+ self->RemoveJoinedPeerInfo(peer_id);
return G_SOURCE_REMOVE;
}, this, nullptr);
}
case cmd::CionCmd::PeerInfo:
{
// read ip_info
- std::string ip_info = parcel->ReadString();
- auto jp = self->GetJoinedPeerInfo(ip_info);
+ std::string peer_id = parcel->ReadString();
+ auto jp = self->GetJoinedPeerInfo(peer_id);
if (jp != nullptr) {
- LOG(INFO) << " Already exist ip " << ip_info << " " << jp->GetAppID();
+ LOG(INFO) << " Already exist peer_id " << peer_id;
break;
}
+ LOG(INFO) << "[" << peer_id << "]";
+
parcel->ReadUInt32(&size);
unsigned char* received_data = new unsigned char[size];
parcel->Read(received_data, size);
auto peer_info = std::make_shared<PeerInfo>(received_data, size);
delete[] received_data;
- self->AddJoinedPeerInfo(ip_info, peer_info);
+ self->AddJoinedPeerInfo(peer_id, peer_info);
self->parent_->OnJoined(peer_info, self->topic_);
break;
}
LOG(ERROR) << "Failed to close VinePubSubDp";
return;
}
+
+ ClearJoinedPeerInfo();
is_online_ = false;
LOG(INFO) << "topic " << topic_ << ", " << channel_id_;
}
}
ret = vine_dp_set_peer_joined_cb(dp_ ,
- [](vine_dp_h dp, const char *ip, int port, void *user_data) {
+ [](vine_dp_h dp, const char *peer_id, void *user_data) {
LOG(INFO) << "dp(" << static_cast<void*>(dp) << ") joined : "
- << ip << ":" << port;
+ << peer_id;
VinePubSubDp* self = static_cast<VinePubSubDp*>(user_data);
if (!self->joined_handler_) {
LOG(WARNING) << "No joined_handler_ for pubsub dp("
}
VineDpPtr sdp = std::make_shared<VineDp>(dp, false);
- self->joined_handler_->OnJoined(sdp, std::string(ip), port);
+ self->joined_handler_->OnJoined(sdp, std::string(peer_id));
}, this);
if (ret != VINE_ERROR_NONE) {
LOG(ERROR) << "Failed to set joined_cb of pubsub dp: "
}
ret = vine_dp_set_peer_left_cb(dp_ ,
- [](vine_dp_h dp, const char *ip, int port, void *user_data) {
+ [](vine_dp_h dp, const char *peer_id, void *user_data) {
LOG(INFO) << "dp(" << static_cast<void*>(dp) << ") left : "
- << ip << ":" << port;
+ << peer_id;
VinePubSubDp* self = static_cast<VinePubSubDp*>(user_data);
if (!self->left_handler_) {
LOG(WARNING) << "No left_handler_ for pubsub dp("
}
VineDpPtr sdp = std::make_shared<VineDp>(dp, false);
- self->left_handler_->OnLeft(sdp, std::string(ip), port);
+ self->left_handler_->OnLeft(sdp, std::string(peer_id));
}, this);
if (ret != VINE_ERROR_NONE) {
LOG(ERROR) << "Failed to set left_cb of pubsub dp: "