[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r14675 - gnunet/src/transport
From: |
gnunet |
Subject: |
[GNUnet-SVN] r14675 - gnunet/src/transport |
Date: |
Fri, 18 Mar 2011 17:41:57 +0100 |
Author: wachs
Date: 2011-03-18 17:41:57 +0100 (Fri, 18 Mar 2011)
New Revision: 14675
Modified:
gnunet/src/transport/gnunet-service-transport.c
gnunet/src/transport/test_transport_api_multi_peer1.conf
gnunet/src/transport/test_transport_api_multi_peer2.conf
gnunet/src/transport/test_transport_ats.c
gnunet/src/transport/test_transport_ats_peer1.conf
gnunet/src/transport/test_transport_ats_peer2.conf
gnunet/src/transport/transport.h
Log:
unix domains sockets are now preferred
Modified: gnunet/src/transport/gnunet-service-transport.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport.c 2011-03-18 14:34:40 UTC
(rev 14674)
+++ gnunet/src/transport/gnunet-service-transport.c 2011-03-18 16:41:57 UTC
(rev 14675)
@@ -929,7 +929,7 @@
*
* @param neighbour target peer for which to transmit
*/
-static void try_transmission_to_peer (struct NeighbourList *neighbour);
+static void try_transmission_to_peer (struct NeighbourList *n);
struct ATS_info * ats_init ();
@@ -947,6 +947,9 @@
const struct GNUNET_PeerIdentity *peer,
const struct GNUNET_TRANSPORT_ATS_Information *ats_data);
+struct ForeignAddressList * ats_get_preferred_address (struct ATS_info * ats,
+ struct NeighbourList *n);
+
/**
* Find an entry in the neighbour list for a particular peer.
*
@@ -1525,6 +1528,9 @@
struct GNUNET_TIME_Absolute now = GNUNET_TIME_absolute_get ();
struct ForeignAddressList *best_address;
+ /* Hack to prefer unix domain sockets */
+ struct ForeignAddressList *unix_address = NULL;
+
best_address = NULL;
while (head != NULL)
{
@@ -1566,6 +1572,12 @@
(unsigned long long) addresses->timeout.abs_value,
(unsigned int) addresses->distance);
#endif
+ if (0==strcmp(head->plugin->short_name,"unix"))
+ {
+ if ((unix_address == NULL) || ((unix_address != NULL)
&&
+ (addresses->latency.rel_value <
unix_address->latency.rel_value)))
+ unix_address = addresses;
+ }
if ( ( (best_address == NULL) ||
(addresses->connected == GNUNET_YES) ||
(best_address->connected == GNUNET_NO) ) &&
@@ -1577,12 +1589,22 @@
connected a chance some times... */
addresses = addresses->next;
}
+ if (unix_address != NULL)
+ break;
head = head->next;
}
+ if (unix_address != NULL)
+ {
+ best_address = unix_address;
+#if DEBUG_TRANSPORT
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Found unix address, forced this
address\n");
+#endif
+ }
if (best_address != NULL)
{
#if DEBUG_TRANSPORT
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Best address found (`%s') has latency of %llu ms.\n",
(best_address->addrlen > 0)
? a2s (best_address->ready_list->plugin->short_name,
@@ -1599,6 +1621,7 @@
1,
GNUNET_NO);
}
+
return best_address;
}
@@ -1626,7 +1649,7 @@
* @param neighbour target peer for which to transmit
*/
static void
-try_transmission_to_peer (struct NeighbourList *neighbour)
+try_transmission_to_peer (struct NeighbourList *n)
{
struct ReadyList *rl;
struct MessageQueue *mq;
@@ -1634,7 +1657,7 @@
ssize_t ret;
int force_address;
- if (neighbour->messages_head == NULL)
+ if (n->messages_head == NULL)
{
#if DEBUG_TRANSPORT
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -1644,12 +1667,12 @@
return; /* nothing to do */
}
rl = NULL;
- mq = neighbour->messages_head;
+ mq = n->messages_head;
force_address = GNUNET_YES;
if (mq->specific_address == NULL)
{
/* TODO: ADD ATS */
- mq->specific_address = find_ready_address(neighbour);
+ mq->specific_address = ats_get_preferred_address(ats, n);
GNUNET_STATISTICS_update (stats,
gettext_noop ("# transport selected peer
address freely"),
1,
@@ -1680,9 +1703,9 @@
mq->message_buf_size,
GNUNET_NO);
if (mq->client != NULL)
- transmit_send_ok (mq->client, neighbour, &neighbour->id, GNUNET_NO);
- GNUNET_CONTAINER_DLL_remove (neighbour->messages_head,
- neighbour->messages_tail,
+ transmit_send_ok (mq->client, n, &n->id, GNUNET_NO);
+ GNUNET_CONTAINER_DLL_remove (n->messages_head,
+ n->messages_tail,
mq);
GNUNET_free (mq);
return; /* nobody ready */
@@ -1691,11 +1714,11 @@
gettext_noop ("# message delivery deferred (no
address)"),
1,
GNUNET_NO);
- if (neighbour->retry_task != GNUNET_SCHEDULER_NO_TASK)
- GNUNET_SCHEDULER_cancel (neighbour->retry_task);
- neighbour->retry_task = GNUNET_SCHEDULER_add_delayed (timeout,
+ if (n->retry_task != GNUNET_SCHEDULER_NO_TASK)
+ GNUNET_SCHEDULER_cancel (n->retry_task);
+ n->retry_task = GNUNET_SCHEDULER_add_delayed (timeout,
&retry_transmission_task,
- neighbour);
+ n);
#if DEBUG_TRANSPORT
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"No validated destination address available to transmit
message of size %u to peer `%4s', will wait %llums to find an address.\n",
@@ -1707,8 +1730,8 @@
(unless that's already pending...) */
return;
}
- GNUNET_CONTAINER_DLL_remove (neighbour->messages_head,
- neighbour->messages_tail,
+ GNUNET_CONTAINER_DLL_remove (n->messages_head,
+ n->messages_tail,
mq);
if (mq->specific_address->connected == GNUNET_NO)
mq->specific_address->connect_attempts++;
@@ -5675,6 +5698,23 @@
ats_calculate_bandwidth_distribution(ats);
}
+struct ForeignAddressList * ats_get_preferred_address (struct ATS_info * ats,
+ struct NeighbourList *n)
+{
+#if DEBUG_ATS
+ GNUNET_log (GNUNET_ERROR_TYPE_BULK, "ats_get_prefered_transport for
peer: %s\n",GNUNET_i2s(&n->id));
+#endif
+ struct ReadyList *next = n->plugins;
+ while (next != NULL)
+ {
+#if DEBUG_ATS
+ GNUNET_log (GNUNET_ERROR_TYPE_BULK, "plugin: %s
%i\n",next->plugin->short_name,strcmp(next->plugin->short_name,"unix"));
+#endif
+ next = next->next;
+ }
+ return find_ready_address(n);
+}
+
/**
* Initiate transport service.
*
Modified: gnunet/src/transport/test_transport_api_multi_peer1.conf
===================================================================
--- gnunet/src/transport/test_transport_api_multi_peer1.conf 2011-03-18
14:34:40 UTC (rev 14674)
+++ gnunet/src/transport/test_transport_api_multi_peer1.conf 2011-03-18
16:41:57 UTC (rev 14675)
@@ -27,6 +27,9 @@
#BINDTO4 = 127.0.0.1
#BINDTO6 = ::1
+[transport-unix]
+PORT = 30004
+
[fs]
AUTOSTART = NO
@@ -56,7 +59,7 @@
MINIMUM-FRIENDS = 0
[transport]
-PLUGINS = tcp udp http
+PLUGINS = tcp udp http unix
#DEBUG = YES
#PREFIX = xterm -T transport2 -e gdb --command=cmd --args
#PREFIX = valgrind --tool=memcheck --leak-check=full --log-file=transport%p
Modified: gnunet/src/transport/test_transport_api_multi_peer2.conf
===================================================================
--- gnunet/src/transport/test_transport_api_multi_peer2.conf 2011-03-18
14:34:40 UTC (rev 14674)
+++ gnunet/src/transport/test_transport_api_multi_peer2.conf 2011-03-18
16:41:57 UTC (rev 14675)
@@ -27,6 +27,8 @@
#BINDTO4 = 127.0.0.1
#BINDTO6 = ::1
+[transport-unix]
+PORT = 40005
[core]
AUTOSTART = NO
@@ -57,7 +59,7 @@
MINIMUM-FRIENDS = 0
[transport]
-PLUGINS = tcp udp http
+PLUGINS = tcp udp http unix
#DEBUG = YES
ACCEPT_FROM6 = ::1;
ACCEPT_FROM = 127.0.0.1;
Modified: gnunet/src/transport/test_transport_ats.c
===================================================================
--- gnunet/src/transport/test_transport_ats.c 2011-03-18 14:34:40 UTC (rev
14674)
+++ gnunet/src/transport/test_transport_ats.c 2011-03-18 16:41:57 UTC (rev
14675)
@@ -336,7 +336,6 @@
exchange_hello (void *cls,
const struct GNUNET_MessageHeader *message)
{
- return;
struct PeerContext *me = cls;
GNUNET_TRANSPORT_get_hello_cancel (p1.th, &exchange_hello, me);
Modified: gnunet/src/transport/test_transport_ats_peer1.conf
===================================================================
--- gnunet/src/transport/test_transport_ats_peer1.conf 2011-03-18 14:34:40 UTC
(rev 14674)
+++ gnunet/src/transport/test_transport_ats_peer1.conf 2011-03-18 16:41:57 UTC
(rev 14675)
@@ -8,6 +8,9 @@
INTERNAL_ADDRESS = 127.0.0.1
EXTERNAL_ADDRESS = 127.0.0.1
+[transport-unix]
+PORT = 4368
+
[fs]
AUTOSTART = NO
@@ -37,7 +40,7 @@
MINIMUM-FRIENDS = 0
[transport]
-PLUGINS = tcp
+PLUGINS = tcp unix
#DEBUG = YES
#PREFIX = xterm -T transport2 -e gdb --command=cmd --args
#PREFIX = valgrind --tool=memcheck --leak-check=full --log-file=transport%p
Modified: gnunet/src/transport/test_transport_ats_peer2.conf
===================================================================
--- gnunet/src/transport/test_transport_ats_peer2.conf 2011-03-18 14:34:40 UTC
(rev 14674)
+++ gnunet/src/transport/test_transport_ats_peer2.conf 2011-03-18 16:41:57 UTC
(rev 14675)
@@ -8,6 +8,9 @@
EXTERNAL_ADDRESS = 127.0.0.1
INTERNAL_ADDRESS = 127.0.0.1
+[transport-unix]
+PORT = 5368
+
[core]
AUTOSTART = NO
@@ -37,7 +40,7 @@
MINIMUM-FRIENDS = 0
[transport]
-PLUGINS = tcp
+PLUGINS = tcp unix
#DEBUG = YES
ACCEPT_FROM6 = ::1;
ACCEPT_FROM = 127.0.0.1;
Modified: gnunet/src/transport/transport.h
===================================================================
--- gnunet/src/transport/transport.h 2011-03-18 14:34:40 UTC (rev 14674)
+++ gnunet/src/transport/transport.h 2011-03-18 16:41:57 UTC (rev 14675)
@@ -30,6 +30,27 @@
#include "gnunet_time_lib.h"
#include "gnunet_transport_service.h"
+/* Minimum time between to calculations*/
+#define ATS_MIN_INTERVAL
GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_MILLISECONDS,250)
+#define ATS_EXEC_INTERVAL
GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS,1)
+
+#define DEBUG_ATS GNUNET_NO
+
+struct ATS_info
+{
+ struct GNUNET_CONTAINER_MultiHashMap * peers;
+ struct GNUNET_TIME_Absolute last;
+ struct GNUNET_TIME_Relative min_delta;
+ struct GNUNET_TIME_Relative reg_delta;
+
+ GNUNET_SCHEDULER_TaskIdentifier ats_task;
+};
+
+struct ATS_peer
+{
+ struct GNUNET_PeerIdentity peer;
+};
+
#define DEBUG_TRANSPORT GNUNET_NO
#define DEBUG_TRANSPORT_TIMEOUT GNUNET_NO
#define DEBUG_TRANSPORT_DISCONNECT GNUNET_NO
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r14675 - gnunet/src/transport,
gnunet <=