network/stack: Remove unused "Fifo" class.
Its declarations were moved from another header to this file in 2008, with a comment in the commit message and a TODO here questioning whether it was needed for anything. In the 15 years since then, nothing has used it.
This commit is contained in:
parent
4100480724
commit
0b829b1151
@ -28,38 +28,6 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// internal Fifo class which doesn't maintain it's own lock
|
|
||||||
// TODO: do we need this one for anything?
|
|
||||||
class Fifo {
|
|
||||||
public:
|
|
||||||
Fifo(const char* name, size_t maxBytes);
|
|
||||||
~Fifo();
|
|
||||||
|
|
||||||
status_t InitCheck() const;
|
|
||||||
|
|
||||||
status_t Enqueue(net_buffer* buffer);
|
|
||||||
status_t EnqueueAndNotify(net_buffer* _buffer, net_socket* socket,
|
|
||||||
uint8 event);
|
|
||||||
status_t Wait(mutex* lock, bigtime_t timeout);
|
|
||||||
net_buffer* Dequeue(bool clone);
|
|
||||||
status_t Clear();
|
|
||||||
|
|
||||||
void WakeAll();
|
|
||||||
|
|
||||||
bool IsEmpty() const { return current_bytes == 0; }
|
|
||||||
|
|
||||||
//private:
|
|
||||||
// these field names are kept so we can use templatized
|
|
||||||
// functions together with net_fifo
|
|
||||||
sem_id notify;
|
|
||||||
int32 waiting;
|
|
||||||
size_t max_bytes;
|
|
||||||
size_t current_bytes;
|
|
||||||
struct list buffers;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static struct list sTimers;
|
static struct list sTimers;
|
||||||
static mutex sTimerLock;
|
static mutex sTimerLock;
|
||||||
static sem_id sTimerWaitSem;
|
static sem_id sTimerWaitSem;
|
||||||
@ -234,102 +202,6 @@ notify_socket(net_socket* socket, uint8 event, int32 value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// #pragma mark - FIFOs
|
|
||||||
|
|
||||||
|
|
||||||
Fifo::Fifo(const char* name, size_t maxBytes)
|
|
||||||
{
|
|
||||||
base_fifo_init(this, name, maxBytes);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Fifo::~Fifo()
|
|
||||||
{
|
|
||||||
Clear();
|
|
||||||
delete_sem(notify);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
status_t
|
|
||||||
Fifo::InitCheck() const
|
|
||||||
{
|
|
||||||
return !(notify < B_OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
status_t
|
|
||||||
Fifo::Enqueue(net_buffer* buffer)
|
|
||||||
{
|
|
||||||
return base_fifo_enqueue_buffer(this, buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
status_t
|
|
||||||
Fifo::EnqueueAndNotify(net_buffer* _buffer, net_socket* socket, uint8 event)
|
|
||||||
{
|
|
||||||
net_buffer *buffer = gNetBufferModule.clone(_buffer, false);
|
|
||||||
if (buffer == NULL)
|
|
||||||
return B_NO_MEMORY;
|
|
||||||
|
|
||||||
status_t status = Enqueue(buffer);
|
|
||||||
if (status < B_OK)
|
|
||||||
gNetBufferModule.free(buffer);
|
|
||||||
else
|
|
||||||
notify_socket(socket, event, current_bytes);
|
|
||||||
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
status_t
|
|
||||||
Fifo::Wait(mutex* lock, bigtime_t timeout)
|
|
||||||
{
|
|
||||||
waiting++;
|
|
||||||
mutex_unlock(lock);
|
|
||||||
status_t status = acquire_sem_etc(notify, 1,
|
|
||||||
B_CAN_INTERRUPT | B_ABSOLUTE_TIMEOUT, timeout);
|
|
||||||
mutex_lock(lock);
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
net_buffer*
|
|
||||||
Fifo::Dequeue(bool clone)
|
|
||||||
{
|
|
||||||
net_buffer* buffer = (net_buffer*)list_get_first_item(&buffers);
|
|
||||||
|
|
||||||
// assert(buffer != NULL);
|
|
||||||
|
|
||||||
if (clone) {
|
|
||||||
buffer = gNetBufferModule.clone(buffer, false);
|
|
||||||
fifo_notify_one_reader(waiting, notify);
|
|
||||||
}else {
|
|
||||||
list_remove_item(&buffers, buffer);
|
|
||||||
current_bytes -= buffer->size;
|
|
||||||
}
|
|
||||||
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
status_t
|
|
||||||
Fifo::Clear()
|
|
||||||
{
|
|
||||||
return base_fifo_clear(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
Fifo::WakeAll()
|
|
||||||
{
|
|
||||||
#ifdef __HAIKU__
|
|
||||||
release_sem_etc(notify, 0, B_RELEASE_ALL);
|
|
||||||
#else
|
|
||||||
release_sem_etc(notify, 0, waiting);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
init_fifo(net_fifo* fifo, const char* name, size_t maxBytes)
|
init_fifo(net_fifo* fifo, const char* name, size_t maxBytes)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user