View Javadoc
1   package org.opentrafficsim.sim0mq.publisher;
2   
3   import org.djunits.Throw;
4   import org.djutils.event.Event;
5   import org.djutils.event.EventType;
6   import org.djutils.event.EventTypeInterface;
7   import org.djutils.metadata.MetaData;
8   import org.djutils.serialization.EndianUtil;
9   import org.djutils.serialization.SerializationException;
10  import org.djutils.serialization.serializers.Pointer;
11  import org.djutils.serialization.serializers.Serializer;
12  
13  /**
14   * Convert one Event into an equivalent Sim0MQ Message, or back.
15   * <p>
16   * Copyright (c) 2020-2020 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
17   * BSD-style license. See <a href="http://opentrafficsim.org/docs/current/license.html">OpenTrafficSim License</a>.
18   * </p>
19   * @author <a href="http://www.tbm.tudelft.nl/averbraeck">Alexander Verbraeck</a>
20   * @author <a href="http://www.tudelft.nl/pknoppers">Peter Knoppers</a>
21   * @author <a href="http://www.transport.citg.tudelft.nl">Wouter Schakel</a>
22   * @param <E> event type
23   */
24  public class EventSerializer<E extends Event> implements Serializer<Event>
25  {
26      /** The type of event that this EventSerializer handles. */
27      private final EventType eventType;
28  
29      /**
30       * Construct a new EventSerializer for the specified <code>EventType</code>.
31       * @param eventType EventType; the event type
32       */
33      EventSerializer(final EventType eventType)
34      {
35          this.eventType = eventType;
36      }
37  
38      /** {@inheritDoc} */
39      @Override
40      public int size(final Event event) throws SerializationException
41      {
42          EventTypeInterface et = event.getType();
43          Throw.when(et.equals(this.eventType), ClassCastException.class,
44                  "EventSerializer for " + this.eventType.getName() + " cannot handle event " + event);
45          int result = et.getName().length();
46          MetaData metaData = this.eventType.getMetaData();
47          for (int index = 0; index < metaData.size(); index++)
48          {
49              // TODO: There has to be sme content here?
50          }
51          return result;
52      }
53  
54      /** {@inheritDoc} */
55      @Override
56      public int sizeWithPrefix(final Event event) throws SerializationException
57      {
58          return 1 + size(event);
59      }
60  
61      /** {@inheritDoc} */
62      @Override
63      public byte fieldType()
64      {
65          return 33;
66      }
67  
68      /** {@inheritDoc} */
69      @Override
70      public void serialize(final Event object, final byte[] buffer, final Pointer pointer, final EndianUtil endianUtil)
71              throws SerializationException
72      {
73          // TODO Auto-generated method stub
74  
75      }
76  
77      /** {@inheritDoc} */
78      @Override
79      public void serializeWithPrefix(final Event object, final byte[] buffer, final Pointer pointer, final EndianUtil endianUtil)
80              throws SerializationException
81      {
82          // TODO Auto-generated method stub
83  
84      }
85  
86      /** {@inheritDoc} */
87      @Override
88      public Event deSerialize(final byte[] buffer, final Pointer pointer, final EndianUtil endianUtil)
89              throws SerializationException
90      {
91          // TODO Auto-generated method stub
92          return null;
93      }
94  
95      /** {@inheritDoc} */
96      @Override
97      public String dataClassName()
98      {
99          // TODO Auto-generated method stub
100         return null;
101     }
102 
103     /** {@inheritDoc} */
104     @Override
105     public final int getNumberOfDimensions()
106     {
107         return 0;
108     }
109 
110 }