View Javadoc
1   /*
2    * Copyright 2016 The Netty Project
3    *
4    * The Netty Project licenses this file to you under the Apache License,
5    * version 2.0 (the "License"); you may not use this file except in compliance
6    * with the License. You may obtain a copy of the License at:
7    *
8    *   https://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13   * License for the specific language governing permissions and limitations
14   * under the License.
15   */
16  package io.netty.handler.codec.smtp;
17  
18  import io.netty.buffer.ByteBuf;
19  import io.netty.buffer.Unpooled;
20  import io.netty.util.internal.UnstableApi;
21  
22  /**
23   * The last part of a sequence of {@link SmtpContent}s that are sent after a {@code DATA} request.
24   * Be aware that a {@link SmtpContent} / {@link LastSmtpContent} sequence must always use CRLF as line delimiter
25   * and the lines that start with a DOT must be escaped with an extra DOT as
26   * specified by <a href="https://www.ietf.org/rfc/rfc2821.txt">RFC2821</a>.
27   */
28  @UnstableApi
29  public interface LastSmtpContent extends SmtpContent {
30  
31      /**
32       * Empty {@link LastSmtpContent}.
33       */
34      LastSmtpContent EMPTY_LAST_CONTENT = new LastSmtpContent() {
35          @Override
36          public LastSmtpContent copy() {
37              return this;
38          }
39  
40          @Override
41          public LastSmtpContent duplicate() {
42              return this;
43          }
44  
45          @Override
46          public LastSmtpContent retainedDuplicate() {
47              return this;
48          }
49  
50          @Override
51          public LastSmtpContent replace(ByteBuf content) {
52              return new DefaultLastSmtpContent(content);
53          }
54  
55          @Override
56          public LastSmtpContent retain() {
57              return this;
58          }
59  
60          @Override
61          public LastSmtpContent retain(int increment) {
62              return this;
63          }
64  
65          @Override
66          public LastSmtpContent touch() {
67              return this;
68          }
69  
70          @Override
71          public LastSmtpContent touch(Object hint) {
72              return this;
73          }
74  
75          @Override
76          public ByteBuf content() {
77              return Unpooled.EMPTY_BUFFER;
78          }
79  
80          @Override
81          public int refCnt() {
82              return 1;
83          }
84  
85          @Override
86          public boolean release() {
87              return false;
88          }
89  
90          @Override
91          public boolean release(int decrement) {
92              return false;
93          }
94      };
95  
96      @Override
97      LastSmtpContent copy();
98  
99      @Override
100     LastSmtpContent duplicate();
101 
102     @Override
103     LastSmtpContent retainedDuplicate();
104 
105     @Override
106     LastSmtpContent replace(ByteBuf content);
107 
108     @Override
109     LastSmtpContent retain();
110 
111     @Override
112     LastSmtpContent retain(int increment);
113 
114     @Override
115     LastSmtpContent touch();
116 
117     @Override
118     LastSmtpContent touch(Object hint);
119 }