1 /**
2 * Copyright 2003-2006 Greg Luck
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 package net.sf.ehcache.distribution;
18
19 import net.sf.ehcache.Element;
20
21 import java.io.Serializable;
22
23 /**
24 * An Event Message, in respect of a particular cache.
25 * <p/>
26 * The message is Serializable, so that it can be sent across the network.
27 * @author Greg Luck
28 * @version $Id: EventMessage.java 52 2006-04-24 14:50:03Z gregluck $
29 * @noinspection SerializableHasSerializationMethods
30 */
31 public final class EventMessage implements Serializable {
32
33
34 /**
35 * A put or update event.
36 */
37 public static final int PUT = 0;
38
39 /**
40 * A remove or invalidate event.
41 */
42 public static final int REMOVE = 1;
43
44 private static final long serialVersionUID = -5760542938372164184L;
45
46 /**
47 * The event component.
48 */
49 private final int event;
50 /**
51 * The element component.
52 */
53 private final Element element;
54 /**
55 * The key component.
56 */
57 private final Serializable key;
58
59
60
61 /**
62 * Full constructor.
63 * @param event
64 * @param key
65 * @param element
66 */
67 public EventMessage(int event, Serializable key, Element element) {
68 this.event = event;
69 this.key = key;
70 this.element = element;
71 }
72
73 /**
74 * Gets the event.
75 * @return either {@link #PUT} or {@link #REMOVE}
76 */
77 public final int getEvent() {
78 return event;
79 }
80
81 /**
82 * @return the element component of the message. null if a {@link #REMOVE} event
83 */
84 public final Element getElement() {
85 return element;
86 }
87
88 /**
89 * @return the key component of the message. null if a {@link #PUT} event
90 */
91 public final Serializable getSerializableKey() {
92 return key;
93 }
94 }
95