HOME PCB
..MulticastHello.javaMulticastJsonObject.javaMulticastJsonReceivingThread.javaMulticastJsonSendingThread.javaMulticastObject.javaMulticastReceiveSingleObject.javaMulticastReceivingThread.javaMulticastSendingThread.javaMulticastThread.javaMulticastWebProgram.java
package Multicast;

import Common.JsonObject;
import Common.Utils;

import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;

public abstract class MulticastJsonObject extends JsonObject implements MulticastObject
{
    private transient InetSocketAddress sender = null;

    protected MulticastJsonObject()
    { }

    public abstract void copy(Object object);

    @Override
    public void loadValue(DatagramPacket packet)
    {
        fromBytes(packet.getData());
        this.sender = (InetSocketAddress) packet.getSocketAddress();
    }

    @Override
    public byte[] toBytes()
    {
        return this.toJsonString().getBytes(Utils.getDefaultCharset());
    }

    @Override
    public void fromBytes(byte[] bytes)
    {
        String json = new String(bytes, Utils.getDefaultCharset()).trim();
        this.copy(JsonObject.getDefaultGson().fromJson(json, this.getClass()));
    }

    public InetSocketAddress getSender()
    {
        return this.sender;
    }

    protected final boolean isObjectThisClass(Object object)
    {
        return this.getClass().isAssignableFrom(object.getClass());
    }
}