* Renamed net_datalink_module::send_data() to send_routed_data(), and

send_datagram() to send_data().
* Renamed DatagramSocket::SocketEnqueue() to EnqueueClone(), SocketDequeue()
  to Dequeue().
* Ordered the methods in ProtocolUtilities.h according to their declaration.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37870 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2010-08-03 12:00:06 +00:00
parent fb816644a7
commit 2651e51d92
6 changed files with 85 additions and 87 deletions
+65 -65
View File
@@ -113,14 +113,14 @@ public:
status_t InitCheck() const;
status_t Enqueue(net_buffer* buffer);
status_t EnqueueClone(net_buffer* buffer);
status_t Dequeue(uint32 flags, net_buffer** _buffer);
net_buffer* Dequeue(bool clone);
status_t BlockingDequeue(bool peek, bigtime_t timeout,
net_buffer** _buffer);
void Clear();
status_t SocketEnqueue(net_buffer* buffer);
status_t SocketDequeue(uint32 flags,
net_buffer** _buffer);
void Clear();
bool IsEmpty() const { return fBuffers.IsEmpty(); }
ssize_t AvailableData() const;
@@ -193,22 +193,7 @@ DECL_DATAGRAM_SOCKET(inline status_t)::Enqueue(net_buffer* buffer)
}
DECL_DATAGRAM_SOCKET(inline status_t)::_Enqueue(net_buffer* buffer)
{
if (fSocket->receive.buffer_size > 0
&& (fCurrentBytes + buffer->size) > fSocket->receive.buffer_size)
return ENOBUFS;
fBuffers.Add(buffer);
fCurrentBytes += buffer->size;
_NotifyOneReader(true);
return B_OK;
}
DECL_DATAGRAM_SOCKET(inline status_t)::SocketEnqueue(net_buffer* _buffer)
DECL_DATAGRAM_SOCKET(inline status_t)::EnqueueClone(net_buffer* _buffer)
{
AutoLocker _(fLock);
@@ -224,6 +209,14 @@ DECL_DATAGRAM_SOCKET(inline status_t)::SocketEnqueue(net_buffer* _buffer)
}
DECL_DATAGRAM_SOCKET(inline status_t)::Dequeue(uint32 flags,
net_buffer** _buffer)
{
return BlockingDequeue((flags & MSG_PEEK) != 0, _SocketTimeout(flags),
_buffer);
}
DECL_DATAGRAM_SOCKET(inline net_buffer*)::Dequeue(bool peek)
{
AutoLocker _(fLock);
@@ -231,21 +224,6 @@ DECL_DATAGRAM_SOCKET(inline net_buffer*)::Dequeue(bool peek)
}
DECL_DATAGRAM_SOCKET(inline net_buffer*)::_Dequeue(bool peek)
{
if (fBuffers.IsEmpty())
return NULL;
if (peek)
return ModuleBundle::Buffer()->clone(fBuffers.Head(), false);
net_buffer* buffer = fBuffers.RemoveHead();
fCurrentBytes -= buffer->size;
return buffer;
}
DECL_DATAGRAM_SOCKET(inline status_t)::BlockingDequeue(bool peek,
bigtime_t timeout, net_buffer** _buffer)
{
@@ -281,14 +259,6 @@ DECL_DATAGRAM_SOCKET(inline status_t)::BlockingDequeue(bool peek,
}
DECL_DATAGRAM_SOCKET(inline status_t)::SocketDequeue(uint32 flags,
net_buffer** _buffer)
{
return BlockingDequeue((flags & MSG_PEEK) != 0, _SocketTimeout(flags),
_buffer);
}
DECL_DATAGRAM_SOCKET(inline void)::Clear()
{
AutoLocker _(fLock);
@@ -296,15 +266,6 @@ DECL_DATAGRAM_SOCKET(inline void)::Clear()
}
DECL_DATAGRAM_SOCKET(inline void)::_Clear()
{
BufferList::Iterator it = fBuffers.GetIterator();
while (it.HasNext())
ModuleBundle::Buffer()->free(it.Next());
fCurrentBytes = 0;
}
DECL_DATAGRAM_SOCKET(inline ssize_t)::AvailableData() const
{
AutoLocker _(fLock);
@@ -316,6 +277,19 @@ DECL_DATAGRAM_SOCKET(inline ssize_t)::AvailableData() const
}
DECL_DATAGRAM_SOCKET(inline void)::WakeAll()
{
release_sem_etc(fNotify, 0, B_RELEASE_ALL);
}
DECL_DATAGRAM_SOCKET(inline void)::NotifyOne()
{
release_sem_etc(fNotify, 1, B_RELEASE_IF_WAITING_ONLY
| B_DO_NOT_RESCHEDULE);
}
DECL_DATAGRAM_SOCKET(inline status_t)::SocketStatus(bool peek) const
{
if (peek)
@@ -328,6 +302,45 @@ DECL_DATAGRAM_SOCKET(inline status_t)::SocketStatus(bool peek) const
}
DECL_DATAGRAM_SOCKET(inline status_t)::_Enqueue(net_buffer* buffer)
{
if (fSocket->receive.buffer_size > 0
&& (fCurrentBytes + buffer->size) > fSocket->receive.buffer_size)
return ENOBUFS;
fBuffers.Add(buffer);
fCurrentBytes += buffer->size;
_NotifyOneReader(true);
return B_OK;
}
DECL_DATAGRAM_SOCKET(inline net_buffer*)::_Dequeue(bool peek)
{
if (fBuffers.IsEmpty())
return NULL;
if (peek)
return ModuleBundle::Buffer()->clone(fBuffers.Head(), false);
net_buffer* buffer = fBuffers.RemoveHead();
fCurrentBytes -= buffer->size;
return buffer;
}
DECL_DATAGRAM_SOCKET(inline void)::_Clear()
{
BufferList::Iterator it = fBuffers.GetIterator();
while (it.HasNext())
ModuleBundle::Buffer()->free(it.Next());
fCurrentBytes = 0;
}
DECL_DATAGRAM_SOCKET(inline status_t)::_Wait(bigtime_t timeout)
{
LockingBase::Unlock(&fLock);
@@ -339,19 +352,6 @@ DECL_DATAGRAM_SOCKET(inline status_t)::_Wait(bigtime_t timeout)
}
DECL_DATAGRAM_SOCKET(inline void)::WakeAll()
{
release_sem_etc(fNotify, 0, B_RELEASE_ALL);
}
DECL_DATAGRAM_SOCKET(inline void)::NotifyOne()
{
release_sem_etc(fNotify, 1, B_RELEASE_IF_WAITING_ONLY
| B_DO_NOT_RESCHEDULE);
}
DECL_DATAGRAM_SOCKET(inline void)::_NotifyOneReader(bool notifySocket)
{
release_sem_etc(fNotify, 1, B_RELEASE_IF_WAITING_ONLY
+2 -2
View File
@@ -72,8 +72,8 @@ struct net_datalink_module_info {
status_t (*control)(net_domain* domain, int32 option, void* value,
size_t* _length);
status_t (*send_data)(net_route* route, net_buffer* buffer);
status_t (*send_datagram)(struct net_protocol* protocol,
status_t (*send_routed_data)(net_route* route, net_buffer* buffer);
status_t (*send_data)(struct net_protocol* protocol,
net_domain* domain, net_buffer* buffer);
bool (*is_local_address)(net_domain* domain,