001    /*
002    * Licensed to the Apache Software Foundation (ASF) under one or more
003    * contributor license agreements. See the NOTICE file distributed with
004    * this work for additional information regarding copyright ownership.
005    * The ASF licenses this file to You under the Apache license, Version 2.0
006    * (the "License"); you may not use this file except in compliance with
007    * the License. You may obtain a copy of the License at
008    *
009    *      http://www.apache.org/licenses/LICENSE-2.0
010    *
011    * Unless required by applicable law or agreed to in writing, software
012    * distributed under the License is distributed on an "AS IS" BASIS,
013    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014    * See the license for the specific language governing permissions and
015    * limitations under the license.
016    */
017    package org.apache.logging.log4j.core.appender;
018    
019    import java.nio.charset.Charset;
020    
021    /**
022     * Wrapper for messages that are formatted according to RFC 5425.
023     */
024    public class TlsSyslogFrame {
025        public static final char SPACE = ' ';
026    
027        private String message;
028        private int messageLengthInBytes;
029    
030        public TlsSyslogFrame(final String message) {
031            setMessage(message);
032        }
033    
034        public String getMessage() {
035            return this.message;
036        }
037    
038        public void setMessage(final String message) {
039            this.message = message;
040            setLengthInBytes();
041        }
042    
043        private void setLengthInBytes() {
044            messageLengthInBytes = message.length();
045        }
046    
047        public byte[] getBytes() {
048            final String frame = toString();
049            return frame.getBytes(Charset.defaultCharset());
050        }
051    
052        @Override
053        public String toString() {
054            final String length = Integer.toString(messageLengthInBytes);
055            return length + SPACE + message;
056        }
057    
058        @Override
059        public boolean equals(final Object frame) {
060            return super.equals(frame);
061        }
062    
063        public boolean equals(final TlsSyslogFrame frame) {
064            return isLengthEquals(frame) && isMessageEquals(frame);
065        }
066    
067        private boolean isLengthEquals(final TlsSyslogFrame frame) {
068            return this.messageLengthInBytes == frame.messageLengthInBytes;
069        }
070    
071        private boolean isMessageEquals(final TlsSyslogFrame frame) {
072            return this.message.equals(frame.message);
073        }
074    }