コード例 #1
0
ファイル: TransactionHandler.cs プロジェクト: jslew/PopNet
        private void HandleReset(Msg.ReceiveLine msg)
        {
            var undeleted = _mailDrop.UndeleteAll();

            SendOkResponse("{0} messages undeleted, {1} messages now in maildrop.", undeleted,
                           _mailDrop.Messages.Count());
        }
コード例 #2
0
ファイル: ReceiveLineExtensions.cs プロジェクト: jslew/PopNet
        public static string GetArgs(this Msg.ReceiveLine line)
        {
            var idx = line.Line.IndexOf(' ');

            if (idx == -1)
            {
                return("");
            }
            return(line.Line.Substring(idx + 1).Trim());
        }
コード例 #3
0
ファイル: TransactionHandler.cs プロジェクト: jslew/PopNet
        private void HandleDelete(Msg.ReceiveLine msg)
        {
            var mailMsg = GetMailMessage(msg);

            if (mailMsg != null)
            {
                mailMsg.IsDeleted = true;
                SendOkResponse("message {0} marked as deleted.", mailMsg.Number);
            }
        }
コード例 #4
0
 private void HandleReceiveLine(Msg.ReceiveLine message)
 {
     if (message.Line == null)
     {
         Console.WriteLine("Client disconnected, shutting down...");
         _connectionManager.Tell(new Msg.ConnectionClosed());
         return;
     }
     Console.WriteLine("incoming: " + message.Line);
     _stateHandler.Tell(message);
     ReadNextLine();
 }
コード例 #5
0
ファイル: TransactionHandler.cs プロジェクト: jslew/PopNet
        private void HandleRetrieve(Msg.ReceiveLine msg)
        {
            var mailMsg = GetMailMessage(msg);

            if (mailMsg != null)
            {
                SendOkResponse("{0} octets", mailMsg.Size);
                ConnectionHandler.Tell(new Msg.SendFile
                {
                    Path = mailMsg.Path
                });
            }
        }
コード例 #6
0
ファイル: AuthenticationHandler.cs プロジェクト: jslew/PopNet
 private void ReceivePass(Msg.ReceiveLine msg)
 {
     if (msg.GetArgs() == "P@ssword1")
     {
         ConnectionHandler.Tell(new Msg.UserAuthenticated
         {
             User      = _userName,
             OkMessage = String.Format("+OK user {0} is authenticated.", _userName)
         });
     }
     else
     {
         SendErrResponse("invalid password.");
     }
 }
コード例 #7
0
ファイル: AuthenticationHandler.cs プロジェクト: jslew/PopNet
        public void ReceiveUser(Msg.ReceiveLine msg)
        {
            var user = msg.GetArgs();

            if (user == "User1")
            {
                SendOkResponse("found mailbox for {0}.", user);
                _userName = user;
                Become(ExpectPassCommand);
            }
            else
            {
                SendErrResponse("no such user: {0}.", user);
            }
        }
コード例 #8
0
ファイル: TransactionHandler.cs プロジェクト: jslew/PopNet
        private void HandleList(Msg.ReceiveLine msg)
        {
            var args = msg.GetArgs();

            if (args == "")
            {
                var messages = _mailDrop.Messages.ToArray();
                SendMultilineResponse(String.Format("{0} messages ({1} octets)", messages.Length,
                                                    messages.Sum(m => m.Size)),
                                      messages.Select(m => String.Format("{0} {1}", m.Number, m.Size)).ToArray());
                return;
            }
            var mailMessage = GetMailMessage(msg);

            if (mailMessage != null)
            {
                SendOkResponse("{0} {1}", mailMessage.Number, mailMessage.Size);
            }
        }
コード例 #9
0
ファイル: TransactionHandler.cs プロジェクト: jslew/PopNet
        private MailMessage GetMailMessage(Msg.ReceiveLine msg, bool includeDeleted = false)
        {
            MailMessage message = null;
            var         args    = msg.GetArgs();
            int         msgNum;

            if (args == "")
            {
                SendErrResponse("message number required.");
            }
            else if (!Int32.TryParse(args, out msgNum))
            {
                SendErrResponse("invalid argument: {0}", args);
            }
            else
            {
                message = _mailDrop.GetMessage(msgNum, includeDeleted);
                if (message == null)
                {
                    SendErrResponse("no such message.");
                }
            }
            return(message);
        }
コード例 #10
0
ファイル: ReceiveLineExtensions.cs プロジェクト: jslew/PopNet
 public static string GetCommand(this Msg.ReceiveLine line)
 {
     return(line.Line.Split(' ')[0]);
 }
コード例 #11
0
ファイル: TransactionHandler.cs プロジェクト: jslew/PopNet
        private void HandleStat(Msg.ReceiveLine msg)
        {
            var messages = _mailDrop.Messages.ToArray();

            SendOkResponse("{0} {1}", messages.Count(), messages.Sum(m => m.Size));
        }
コード例 #12
0
 public void ReceiveUnknown(Msg.ReceiveLine msg)
 {
     SendErrResponse("Unknown command: {0}", msg.Line);
 }