Author: alanmc
Date: 2008-01-28 20:18:54 -0500 (Mon, 28 Jan 2008)
New Revision: 94220

Modified:
   trunk/bitsharp/src/MonoTorrent/Client/ClientEngine.cs
   
trunk/bitsharp/src/MonoTorrent/Client/ConnectionListeners/IConnectionListener.cs
   trunk/bitsharp/src/MonoTorrent/Client/ConnectionListeners/SocketListener.cs
   trunk/bitsharp/src/MonoTorrent/Client/EventArgs/NewConnectionEventArgs.cs
   trunk/bitsharp/src/MonoTorrent/Client/Managers/ConnectionManager.cs
   trunk/bitsharp/src/MonoTorrent/Client/Managers/ListenManager.cs
   trunk/bitsharp/src/SampleClient/TestManualConnection.cs
   trunk/bitsharp/src/SampleClient/main.cs
Log:
Hotness! The new manual connection adding API works :)

Modified: trunk/bitsharp/src/MonoTorrent/Client/ClientEngine.cs
===================================================================
--- trunk/bitsharp/src/MonoTorrent/Client/ClientEngine.cs       2008-01-29 
01:11:57 UTC (rev 94219)
+++ trunk/bitsharp/src/MonoTorrent/Client/ClientEngine.cs       2008-01-29 
01:18:54 UTC (rev 94220)
@@ -50,6 +50,7 @@
     /// </summary>
     public class ClientEngine : IDisposable
     {
+        private static Random random = new Random();
         #region Global Constants
 
         public static readonly bool SupportsFastPeer = true;
@@ -276,11 +277,11 @@
         private static string GeneratePeerId()
         {
             StringBuilder sb = new StringBuilder(20);
-            Random rand = new 
Random((int)DateTime.Now.TimeOfDay.TotalMilliseconds);
 
             sb.Append(Common.VersionInfo.ClientVersion);
-            for (int i = 0; i < 12; i++)
-                sb.Append(rand.Next(0, 9));
+            lock (random)
+                for (int i = 0; i < 12; i++)
+                    sb.Append(random.Next(0, 9));
 
             return sb.ToString();
         }

Modified: 
trunk/bitsharp/src/MonoTorrent/Client/ConnectionListeners/IConnectionListener.cs
===================================================================
--- 
trunk/bitsharp/src/MonoTorrent/Client/ConnectionListeners/IConnectionListener.cs
    2008-01-29 01:11:57 UTC (rev 94219)
+++ 
trunk/bitsharp/src/MonoTorrent/Client/ConnectionListeners/IConnectionListener.cs
    2008-01-29 01:18:54 UTC (rev 94220)
@@ -55,9 +55,9 @@
         public abstract void Start();
         public abstract void Stop();
 
-        protected internal virtual void RaiseConnectionReceived(Peer peer, 
IConnection connection, TorrentManager manager, bool overridePeerId)
+        protected internal virtual void RaiseConnectionReceived(Peer peer, 
IConnection connection, TorrentManager manager)
         {
-            ConnectionReceived(this, new NewConnectionEventArgs(peer, 
connection, manager, overridePeerId));
+            ConnectionReceived(this, new NewConnectionEventArgs(peer, 
connection, manager));
         }
     }
 }

Modified: 
trunk/bitsharp/src/MonoTorrent/Client/ConnectionListeners/SocketListener.cs
===================================================================
--- trunk/bitsharp/src/MonoTorrent/Client/ConnectionListeners/SocketListener.cs 
2008-01-29 01:11:57 UTC (rev 94219)
+++ trunk/bitsharp/src/MonoTorrent/Client/ConnectionListeners/SocketListener.cs 
2008-01-29 01:18:54 UTC (rev 94220)
@@ -157,7 +157,7 @@
                                IConnection connection = new 
TCPConnection(peerSocket, true);
 
 
-                RaiseConnectionReceived(peer, connection, null, false);
+                RaiseConnectionReceived(peer, connection, null);
             }
             catch (SocketException)
             {

Modified: 
trunk/bitsharp/src/MonoTorrent/Client/EventArgs/NewConnectionEventArgs.cs
===================================================================
--- trunk/bitsharp/src/MonoTorrent/Client/EventArgs/NewConnectionEventArgs.cs   
2008-01-29 01:11:57 UTC (rev 94219)
+++ trunk/bitsharp/src/MonoTorrent/Client/EventArgs/NewConnectionEventArgs.cs   
2008-01-29 01:18:54 UTC (rev 94220)
@@ -14,23 +14,17 @@
             get { return connection; }
         }
 
-        public bool OverridePeerId
-        {
-            get { return overridePeerId; }
-        }
-
         public Peer Peer
         {
             get { return peer; }
         }
 
-        public NewConnectionEventArgs(Peer peer, IConnection connection, 
TorrentManager manager, bool overridePeerId)
+        public NewConnectionEventArgs(Peer peer, IConnection connection, 
TorrentManager manager)
             : base(manager)
         {
             if (!connection.IsIncoming && manager == null)
                 throw new InvalidOperationException("An outgoing connection 
must specify the torrent manager it belongs to");
 
-            this.overridePeerId = overridePeerId;
             this.connection = connection;
             this.peer = peer;
         }

Modified: trunk/bitsharp/src/MonoTorrent/Client/Managers/ConnectionManager.cs
===================================================================
--- trunk/bitsharp/src/MonoTorrent/Client/Managers/ConnectionManager.cs 
2008-01-29 01:11:57 UTC (rev 94219)
+++ trunk/bitsharp/src/MonoTorrent/Client/Managers/ConnectionManager.cs 
2008-01-29 01:18:54 UTC (rev 94220)
@@ -296,7 +296,7 @@
                 System.Threading.Interlocked.Increment(ref 
this.openConnections);
 
                 // Create a handshake message to send to the peer
-                HandshakeMessage handshake = new 
HandshakeMessage(id.TorrentManager.Torrent.InfoHash, id.Peer.PeerId ?? 
engine.PeerId, VersionInfo.ProtocolStringV100);
+                HandshakeMessage handshake = new 
HandshakeMessage(id.TorrentManager.Torrent.InfoHash, engine.PeerId, 
VersionInfo.ProtocolStringV100);
 
                 if (id.Connection.Encryptor is NoEncryption || 
!ClientEngine.SupportsEncryption)
                 {

Modified: trunk/bitsharp/src/MonoTorrent/Client/Managers/ListenManager.cs
===================================================================
--- trunk/bitsharp/src/MonoTorrent/Client/Managers/ListenManager.cs     
2008-01-29 01:11:57 UTC (rev 94219)
+++ trunk/bitsharp/src/MonoTorrent/Client/Managers/ListenManager.cs     
2008-01-29 01:18:54 UTC (rev 94220)
@@ -123,9 +123,6 @@
             id.Connection = new PeerConnectionBase(0, new NoEncryption());
             id.Connection.Connection = e.Connection;
 
-            if (!e.OverridePeerId)
-                e.Peer.PeerId = null;
-
             Logger.Log(id, "CE Peer incoming connection accepted");
 
             if (id.Connection.Connection.IsIncoming)
@@ -215,7 +212,7 @@
             ClientEngine.BufferManager.FreeBuffer(ref 
id.Connection.recieveBuffer);
             id.Connection.ClientApp = new Software(handshake.PeerId);
 
-            handshake = new 
HandshakeMessage(id.TorrentManager.Torrent.InfoHash, id.Peer.PeerId ?? 
engine.PeerId, VersionInfo.ProtocolStringV100);
+            handshake = new 
HandshakeMessage(id.TorrentManager.Torrent.InfoHash, engine.PeerId, 
VersionInfo.ProtocolStringV100);
             BitfieldMessage bf = new 
BitfieldMessage(id.TorrentManager.Bitfield);
 
             ClientEngine.BufferManager.GetBuffer(ref id.Connection.sendBuffer, 
handshake.ByteLength + bf.ByteLength);

Modified: trunk/bitsharp/src/SampleClient/TestManualConnection.cs
===================================================================
--- trunk/bitsharp/src/SampleClient/TestManualConnection.cs     2008-01-29 
01:11:57 UTC (rev 94219)
+++ trunk/bitsharp/src/SampleClient/TestManualConnection.cs     2008-01-29 
01:18:54 UTC (rev 94220)
@@ -12,15 +12,19 @@
 {
     public class CustomConnection : IConnection
     {
-        #region IConnection Members
+        private string name;
         private Socket s;
         private bool incoming;
-        public CustomConnection(Socket s, bool incoming)
+        public CustomConnection(Socket s, bool incoming, string name)
         {
+            this.name = name;
             this.s = s;
             this.incoming = incoming;
         }
-
+        public override string ToString()
+        {
+            return name;
+        }
         public byte[] AddressBytes
         {
             get { return 
((IPEndPoint)s.RemoteEndPoint).Address.GetAddressBytes(); }
@@ -63,6 +67,7 @@
 
         public int EndReceive(IAsyncResult result)
         {
+            Console.WriteLine("{0} - {1}", name, "received");
             return s.EndReceive(result);
         }
 
@@ -73,22 +78,17 @@
 
         public int EndSend(IAsyncResult result)
         {
+            Console.WriteLine("{0} - {1}", name, "sent");
             return s.EndSend(result);
         }
 
-        #endregion
-
-        #region IDisposable Members
-
         public void Dispose()
         {
             s.Close();
         }
-
-        #endregion
     }
 
-    public class CustomListner : ConnectionListenerBase
+    public class CustomListener : ConnectionListenerBase
     {
         public override void Dispose()
         {
@@ -108,36 +108,77 @@
         public void Add(TorrentManager manager, IConnection connection)
         {
             MonoTorrent.Client.Peer p = new MonoTorrent.Client.Peer("", new 
Uri("tcp://12.123.123.1:2342"), new NoEncryption());
-            base.RaiseConnectionReceived(p, connection, manager, true);
+            base.RaiseConnectionReceived(p, connection, manager);
         }
     }
 
 
     class TestManualConnection
     {
+        ClientEngine engine1;
+        ClientEngine engine2;
+        TorrentManager manager1;
+        TorrentManager manager2;
+        IConnection connection1a;
+        IConnection connection1b;
+        //IConnection connection2a;
+        //IConnection connection2b;
+        CustomListener listener1;
+        CustomListener listener2;
+        Torrent torrent;
+
+        Socket s1a = new Socket(AddressFamily.InterNetwork, SocketType.Stream, 
ProtocolType.Tcp);
+        Socket s1b = new Socket(AddressFamily.InterNetwork, SocketType.Stream, 
ProtocolType.Tcp);
+
+        //Socket s2a = new Socket(AddressFamily.InterNetwork, 
SocketType.Stream, ProtocolType.Tcp);
+        //Socket s2b = new Socket(AddressFamily.InterNetwork, 
SocketType.Stream, ProtocolType.Tcp);
+
         public TestManualConnection()
         {
-            CustomListner listener = new CustomListner();
-            ClientEngine engine = new 
ClientEngine(EngineSettings.DefaultSettings(), listener);
-            Torrent t = Torrent.Load(CreateTorrent());
-            TorrentManager m = new TorrentManager(t, "", 
TorrentSettings.DefaultSettings());
-            engine.Register(m);
-            engine.ConnectionManager.PeerMessageTransferred += delegate(object 
sender, PeerMessageEventArgs e) { Console.WriteLine(e.Message.ToString()); };
-            m.Start();
+            listener1 = new CustomListener();
+            listener2 = new CustomListener();
 
+            engine1 = new ClientEngine(EngineSettings.DefaultSettings(), 
listener1);
+            engine2 = new ClientEngine(EngineSettings.DefaultSettings(), 
listener2);
+
+            torrent = Torrent.Load("Torrents/untitled.bmp.torrent");
+            manager1 = new TorrentManager(torrent, "Downloads", 
TorrentSettings.DefaultSettings());
+            manager2 = new TorrentManager(torrent, "Downloads2", 
TorrentSettings.DefaultSettings());
+
+            engine1.Register(manager1);
+            engine2.Register(manager2);
+
+            //engine1.ConnectionManager.PeerMessageTransferred += 
delegate(object sender, PeerMessageEventArgs e) { 
Console.WriteLine(e.Message.ToString()); };
+            //engine2.ConnectionManager.PeerMessageTransferred += 
delegate(object sender, PeerMessageEventArgs e) { 
Console.WriteLine(e.Message.ToString()); };
+
+            manager1.Start();
+            manager2.Start();
+
             TcpListener socketListener = new TcpListener(1220);
             socketListener.Start();
-            s1.Connect(IPAddress.Loopback, 1220);
-            s2 = socketListener.AcceptSocket();
+            s1a.Connect(IPAddress.Loopback, 1220);
+            s1b = socketListener.AcceptSocket();
 
-            CustomConnection c1 = new CustomConnection(s1, true);
-            CustomConnection c2 = new CustomConnection(s2, false);
-            listener.Add(m, c1);
-            listener.Add(m, c2);
+            //s2a.Connect(IPAddress.Loopback, 1220);
+            //s2b = socketListener.AcceptSocket();
+
+            connection1a = new CustomConnection(s1a, true, "1A");
+            connection1b = new CustomConnection(s1b, false, "1B");
+
+            //connection2a = new CustomConnection(s2a, true, "2A");
+            //connection2b = new CustomConnection(s2b, false, "2B");
+
+            listener1.Add(manager1, connection1a);
+            //listener1.Add(manager1, connection2a);
+            listener2.Add(manager2, connection1b);
+            //listener2.Add(manager2, connection2b);
+
             while (true)
             {
-                Console.WriteLine("c1 active: {0}", c1.Connected);
-                Console.WriteLine("c2 active: {0}", c2.Connected);
+                Console.WriteLine("Connection 1A active: {0}", 
connection1a.Connected);
+                //Console.WriteLine("Connection 1B active: {0}", 
connection2a.Connected);
+                Console.WriteLine("Connection 2A active: {0}", 
connection1b.Connected);
+                //Console.WriteLine("Connection 2B active: {0}", 
connection2b.Connected);
                 System.Threading.Thread.Sleep(1000);
             }
         }
@@ -162,8 +203,7 @@
             return dict;
         }
 
-        Socket s1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, 
ProtocolType.Tcp);
-        Socket s2 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, 
ProtocolType.Tcp);
+
     }
 
 }

Modified: trunk/bitsharp/src/SampleClient/main.cs
===================================================================
--- trunk/bitsharp/src/SampleClient/main.cs     2008-01-29 01:11:57 UTC (rev 
94219)
+++ trunk/bitsharp/src/SampleClient/main.cs     2008-01-29 01:18:54 UTC (rev 
94220)
@@ -27,7 +27,7 @@
 
         static void Main(string[] args)
         {
-//            new SampleClient.TestManualConnection();
+            new SampleClient.TestManualConnection();
                        /* Generate the paths to the folder we will save 
.torrent files to and where we download files to */
             basePath = Environment.CurrentDirectory;                           
                // This is the directory we are currently in
             torrentsPath = Path.Combine(basePath, "Torrents");                 
        // This is the directory we will save .torrents to

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to