throw (std::runtime_error, std::logic_error):
Dev(mac, mtu)
{
- que_id = msgget(key, 0666); // Debe estar previamente creada
+ que_id = msgget(key, IPC_CREAT | 0666);
if (que_id == -1)
throw std::runtime_error("No se pudo crear la cola");
}
return receive(mac);
}
-std::string DevQue::receive(const mac_type& mac) throw (std::runtime_error)
+std::string DevQue::receive(mac_type& mac) throw (std::runtime_error)
{
Frame* f = (Frame*) malloc(sizeof(Frame) + mtu);
if (!f)
throw std::runtime_error("Error al sacar de la cola");
}
std::string s((char*) f->frame, f->size);
+ if (mac == 0)
+ mac = f->mac;
free(f);
#ifdef DEBUG2
std::cout << "DevQue::receive(msgtype/mac = " << mac << ", size = "
return s;
}
+/// Indica cuantos elementos hay en la cola
+size_t DevQue::size() const
+{
+ struct msqid_ds minfo;
+ msgctl(que_id, IPC_STAT, &minfo);
+ return minfo.msg_qnum;
+}
+
+/// Indica si está vacía la cola
+bool DevQue::empty() const
+{
+ return size() == 0;
+}
+
// vim: set et sw=4 sts=4 :