Skip to content

Commit

Permalink
introduced duplicatable V2XMessage functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
iwillitried committed May 15, 2024
1 parent 6a8a743 commit 680b4eb
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* Copyright (c) 2024 Fraunhofer FOKUS and others. All rights reserved.
*
* See the NOTICE file(s) distributed with this work for additional
* information regarding copyright ownership.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*
* Contact: [email protected]
*/

package org.eclipse.mosaic.lib.objects;

import org.eclipse.mosaic.lib.objects.v2x.MessageRouting;

/**
* Creates a copy of the message
* @param <MessageT>
*/
public interface DuplicatableMessage<T extends DuplicatableMessage<T>> {

/**
* Creates a copy of the V2xMessage.
* The message gets a new ID and routing (to use current vehicle position).
* Only its contents (e.g. payload, type, ...) are copied.
*
* @param routing contains current vehicle position
* @return cloned message
*/
T duplicate(MessageRouting routing);
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

package org.eclipse.mosaic.lib.objects.v2x;

import org.eclipse.mosaic.lib.objects.DuplicatableMessage;
import org.eclipse.mosaic.lib.objects.ToDataOutput;
import org.eclipse.mosaic.lib.util.ClassUtils;

Expand All @@ -23,7 +24,7 @@
/**
* This {@link V2xMessage} implementation can be used for simple message exchange between entities.
*/
public final class GenericV2xMessage extends V2xMessage {
public final class GenericV2xMessage extends V2xMessage implements DuplicatableMessage {

private static final long serialVersionUID = 1L;

Expand Down Expand Up @@ -63,6 +64,12 @@ public GenericV2xMessage(MessageRouting routing, ToDataOutput messagePayload, lo
this.payload = new EncodedPayload(messagePayload, minimalMessageSize);
}

public GenericV2xMessage(GenericV2xMessage message) {
super(message.getRouting());
this.messageType = message.getMessageType();
this.payload = message.getPayload();
}


@Override
@Nonnull
Expand All @@ -82,4 +89,8 @@ public String toString() {
+ ", encodedPayload=" + payload + '}';
}

public GenericV2xMessage duplicate(MessageRouting routing) {
return new GenericV2xMessage(routing, messageType, payload.getEffectiveLength());
}

}

0 comments on commit 680b4eb

Please sign in to comment.