Changeset de2c975


Ignore:
Timestamp:
Jan 24, 2005 10:42:05 PM (16 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
5018e56
Parents:
d86e2c0
git-author:
smeghead <smeghead> (01/24/05 22:42:05)
git-committer:
zzz <zzz@…> (01/24/05 22:42:05)
Message:

2005-01-24 smeghead

  • C#-ification of sam-sharp: interface greatly simplified using delegates and events; SamBaseEventHandler? provides basic implementation and helper methods but is now optional.
  • NAnt buildfile and README added for sam-sharp.
Files:
3 added
3 deleted
2 edited

Legend:

Unmodified
Added
Removed
  • apps/sam/csharp/src/I2P.SAM.Client/SamReader.cs

    rd86e2c0 rde2c975  
    99namespace I2P.SAM.Client
    1010{
     11        public delegate void DestReplyReceivedHandler(string publicKey, string privateKey);
     12        public delegate void HelloReplyReceivedHandler(bool ok);
     13        public delegate void NamingReplyReceivedHandler(string name, string result, string valueString, string message);
     14        public delegate void SessionStatusReceivedHandler(string result, string destination, string message);
     15        public delegate void StreamClosedReceivedHandler(string result, int id, string message);
     16        public delegate void StreamConnectedReceivedHandler(string remoteDestination, int id);
     17        public delegate void StreamDataReceivedHandler(int id, byte[] data, int offset, int length);
     18        public delegate void StreamStatusReceivedHandler(string result, int id, string message);
     19        public delegate void UnknownMessageReceivedHandler(string major, string minor, NameValueCollection parameters);
     20
    1121        /// <summary>
    12         ///   Read from a socket, producing events for any SAM message read.
     22        ///   Reads from a socket stream, producing events for any SAM message read.
    1323        /// </summary>
    1424        public class SamReader
    1525        {
    16                 private bool                   _isLive;
    17                 private SamClientEventListener _listener;
    18                 private NetworkStream          _samStream;
    19                 private StreamReader           _streamReader;
    20 
    21                 public SamReader(NetworkStream samStream, SamClientEventListener listener) {
     26                public event DestReplyReceivedHandler       DestReplyReceived;
     27                public event HelloReplyReceivedHandler      HelloReplyReceived;
     28                public event NamingReplyReceivedHandler     NamingReplyReceived;
     29                public event SessionStatusReceivedHandler   SessionStatusReceived;
     30                public event StreamClosedReceivedHandler    StreamClosedReceived;
     31                public event StreamConnectedReceivedHandler StreamConnectedReceived;
     32                public event StreamDataReceivedHandler      StreamDataReceived;
     33                public event StreamStatusReceivedHandler    StreamStatusReceived;
     34                public event UnknownMessageReceivedHandler  UnknownMessageReceived;
     35
     36                private bool          _isLive;
     37                private NetworkStream _samStream;
     38                private StreamReader  _samStreamReader;
     39
     40                public SamReader(NetworkStream samStream) {
    2241                        _samStream = samStream;
    23                         _listener = listener;
    2442                }
    2543
     
    3250                                string line = null;
    3351
    34                                 _streamReader = new StreamReader(_samStream);
    35 
    36                                 try {
    37                                         line = _streamReader.ReadLine();
    38                                         _streamReader.Close();
     52                                _samStreamReader = new StreamReader(_samStream);
     53
     54                                try {
     55                                        line = _samStreamReader.ReadLine();
     56                                        _samStreamReader.Close();
    3957                                } catch (IOException ioe) {
    4058                                        Console.Error.WriteLine("Error reading from SAM: {1}", ioe);
     
    99117
    100118                                                if (result.Equals("OK"))
    101                                                         _listener.HelloReplyReceived(true);
     119                                                        HelloReplyReceived(true);
    102120                                                else
    103                                                         _listener.HelloReplyReceived(false);
    104                                         } else {
    105                                                 _listener.UnknownMessageReceived(major, minor, parameters);
     121                                                        HelloReplyReceived(false);
     122                                        } else {
     123                                                UnknownMessageReceived(major, minor, parameters);
    106124                                        }
    107125
     
    116134                                                string message = parameters.Get("MESSAGE");
    117135
    118                                                 _listener.SessionStatusReceived(result, destination, message);
    119                                         } else {
    120                                                 _listener.UnknownMessageReceived(major, minor, parameters);
     136                                                SessionStatusReceived(result, destination, message);
     137                                        } else {
     138                                                UnknownMessageReceived(major, minor, parameters);
    121139                                        }
    122140
     
    137155                                                string message = parameters.Get("MESSAGE");
    138156
    139                                                 _listener.NamingReplyReceived(name, result, valueString, message);
    140                                         } else {
    141                                                 _listener.UnknownMessageReceived(major, minor, parameters);
     157                                                NamingReplyReceived(name, result, valueString, message);
     158                                        } else {
     159                                                UnknownMessageReceived(major, minor, parameters);
    142160                                        }
    143161
     
    151169                                                string priv = parameters.Get("PRIV");
    152170
    153                                                 _listener.DestReplyReceived(pub, priv);
    154                                         } else {
    155                                                 _listener.UnknownMessageReceived(major, minor, parameters);
     171                                                DestReplyReceived(pub, priv);
     172                                        } else {
     173                                                UnknownMessageReceived(major, minor, parameters);
    156174                                        }
    157175
     
    160178                                default :
    161179
    162                                         _listener.UnknownMessageReceived(major, minor, parameters);
     180                                        UnknownMessageReceived(major, minor, parameters);
    163181                                        break;
    164182                        }
     
    170188                         * Would use another tidy switch() statement here but the Mono
    171189                         * compiler presently gets variable scopes confused within nested
    172                          * switch() contexts. Broken with Mono/mcs 1.0.5, 1.1.3, and SVN
    173                          * head.
     190                         * switch() contexts. Nested switch() is broken with Mono/mcs 1.0.5,
     191                         * 1.1.3, and SVN head.
    174192                         */
    175193                        if (minor.Equals("STATUS")) {
     
    180198
    181199                                try {
    182                                         _listener.StreamStatusReceived(result, Int32.Parse(id), message);
     200                                        StreamStatusReceived(result, Int32.Parse(id), message);
    183201                                } catch {
    184                                         _listener.UnknownMessageReceived(major, minor, parameters);
     202                                        UnknownMessageReceived(major, minor, parameters);
    185203                                }
    186204
     
    191209
    192210                                try {
    193                                         _listener.StreamConnectedReceived(destination, Int32.Parse(id));
     211                                        StreamConnectedReceived(destination, Int32.Parse(id));
    194212                                } catch {
    195                                         _listener.UnknownMessageReceived(major, minor, parameters);
     213                                        UnknownMessageReceived(major, minor, parameters);
    196214                                }
    197215
     
    203221
    204222                                try {
    205                                         _listener.StreamClosedReceived(result, Int32.Parse(id), message);
     223                                        StreamClosedReceived(result, Int32.Parse(id), message);
    206224                                } catch {
    207                                         _listener.UnknownMessageReceived(major, minor, parameters);
     225                                        UnknownMessageReceived(major, minor, parameters);
    208226                                }
    209227
     
    225243
    226244                                                        if (bytesRead != sizeValue) {
    227                                                                 _listener.UnknownMessageReceived(major, minor, parameters);
     245                                                                UnknownMessageReceived(major, minor, parameters);
    228246                                                                return;
    229247                                                        }
    230248                                                } catch {
    231249                                                        _isLive = false;
    232                                                         _listener.UnknownMessageReceived(major, minor, parameters);
     250                                                        UnknownMessageReceived(major, minor, parameters);
     251                                                        return;
    233252                                                }
    234253
    235                                                 _listener.StreamDataReceived(idValue, data, 0, sizeValue);
     254                                                StreamDataReceived(idValue, data, 0, sizeValue);
    236255                                        } catch (FormatException fe) {
    237                                                 _listener.UnknownMessageReceived(major, minor, parameters);
     256                                                UnknownMessageReceived(major, minor, parameters);
    238257                                        }
    239258                                } else {
    240                                         _listener.UnknownMessageReceived(major, minor, parameters);
     259                                        UnknownMessageReceived(major, minor, parameters);
    241260                                }
    242261                        } else {
    243                                 _listener.UnknownMessageReceived(major, minor, parameters);
     262                                UnknownMessageReceived(major, minor, parameters);
    244263                        }
    245264                }
  • history.txt

    rd86e2c0 rde2c975  
    1 $Id: history.txt,v 1.131 2005/01/21 20:53:02 jrandom Exp $
     1$Id: history.txt,v 1.132 2005/01/23 03:22:11 jrandom Exp $
     2
     32005-01-24  smeghead
     4    * C#-ification of sam-sharp: interface greatly simplified using delegates
     5      and events; SamBaseEventHandler provides basic implementation and helper
     6      methods but is now optional.
     7    * NAnt buildfile and README added for sam-sharp.
    28
    392005-01-23  smeghead
Note: See TracChangeset for help on using the changeset viewer.