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*/
017package org.apache.logging.log4j.core.appender;
018
019import java.nio.charset.Charset;
020
021import org.apache.logging.log4j.util.Chars;
022
023/**
024 * Wrapper for messages that are formatted according to RFC 5425.
025 */
026public class TlsSyslogFrame {
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 + Chars.SPACE + message;
056    }
057
058    public boolean equals(final TlsSyslogFrame frame) {
059        return isLengthEquals(frame) && isMessageEquals(frame);
060    }
061
062    private boolean isLengthEquals(final TlsSyslogFrame frame) {
063        return this.messageLengthInBytes == frame.messageLengthInBytes;
064    }
065
066    private boolean isMessageEquals(final TlsSyslogFrame frame) {
067        return this.message.equals(frame.message);
068    }
069}