1/*
2 * Copyright 2003-2004, Haiku Inc.
3 * Distributed under the terms of the MIT License.
4 */
5
6#ifndef _K_PPP_UTILS__H
7#define _K_PPP_UTILS__H
8
9#ifndef _K_PPP_DEFS__H
10#include <KPPPDefs.h>
11#endif
12
13#include <OS.h>
14
15class KPPPProtocol;
16
17
18// helper functions
19extern bool IsProtocolAllowed(const KPPPProtocol& protocol);
20
21// the list template does not support iterating over each item :(
22// this template iterates over each item in an indexed list
23template<class _LIST, class _FUNCTION>
24inline
25void
26ForEachItem(_LIST& list, _FUNCTION function)
27{
28	for(int index = 0; index < list.CountItems(); index++)
29		function(list.ItemAt(index));
30}
31
32
33// These are very simple send/receive_data functions with a timeout
34// and there is a race condition beween has_data() and send/receive_data().
35// Timeouts in ms.
36extern status_t send_data_with_timeout(thread_id thread, int32 code, void *buffer,
37	size_t buffer_size, uint32 timeout);
38extern status_t receive_data_with_timeout(thread_id *sender, int32 *code,
39	void *buffer, size_t buffer_size, uint32 timeout);
40
41
42#endif
43