示例#1
0
        public void TestSendContinuationRequest()
        {
            var command = new ImapCommand(null, "ignored", "xxxxxxxx");

              Assert.AreEqual("xxxxxxxx\r\n",
                      SendCommand(command));
        }
示例#2
0
        public void TestSendCommandNoArguments()
        {
            var command = new ImapCommand("NOOP", "0001");

              Assert.AreEqual("0001 NOOP\r\n",
                      SendCommand(command));
        }
示例#3
0
        public void TestSendCommandContainsSynchronizingLiteral()
        {
            var command = new ImapCommand("SEARCH", "0001", "FROM", new ImapLiteralString("from", Encoding.ASCII, ImapLiteralOptions.Synchronizing));

              Assert.AreEqual("0001 SEARCH FROM {4}\r\nfrom\r\n",
                      SendCommand(command));
        }
示例#4
0
        public void TestSendCommand()
        {
            var command = new ImapCommand("login", "0001", "username", "password");

              Assert.AreEqual("0001 login username password\r\n",
                      SendCommand(command));
        }
示例#5
0
        private string SendCommand(ImapCommand command)
        {
            baseStream.Seek(0, SeekOrigin.Begin);

              sender.Send(command);

              while (sender.CommandContinuing) {
            sender.Send();
              }

              baseStream.Seek(0, SeekOrigin.Begin);

              var reader = new StreamReader(baseStream, NetworkTransferEncoding.Transfer8Bit);

              return reader.ReadToEnd();
        }
示例#6
0
        public void Send(ImapCommand command)
        {
            ClearUnsent();

              var argCount = command.Arguments.Length + (command.CommandString == null ? 0 : 2);
              var argIndex = 0;
              var args = new ImapString[argCount];

              if (command.CommandString != null) {
            args[argIndex++] = command.Tag;
            args[argIndex++] = command.CommandString;
              }

              for (var i = 0; i < command.Arguments.Length; i++, argIndex++) {
            args[argIndex] = command.Arguments[i];
              }

              Enqueue(args);

              Enqueue(Smdn.Formats.Octets.CRLF);

              Send();
        }
示例#7
0
 public SendCommandContext(ImapCommand command)
 {
     this.Command = command;
     this.Sent = false;
 }
示例#8
0
 public ICommandContinuationContext SendCommand(ImapCommand command)
 {
     return SendCommand(new SendCommandContext(command));
 }
示例#9
0
        public ImapCommand CreateCommand(string command, params ImapString[] arguments)
        {
            var comm = new ImapCommand(command, Interlocked.Increment(ref commandTag).ToString("x4"), arguments);

              Interlocked.CompareExchange(ref commandTag, 0, 0x10000);

              return comm;
        }