1 /* Open Source Java Caching Service
2 * Copyright (C) 2002 Frank Karlstrøm
3 * This library is free software; you can redistribute it and/or
4 * modify it under the terms of the GNU Lesser General Public
5 * License as published by the Free Software Foundation; either
6 * version 2.1 of the License, or (at your option) any later version.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public
14 * License along with this library; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 *
17 * The author can be contacted by email: fjankk@users.sourceforge.net
18 */
19 package org.fjank.jcache.distribution;
20
21 /**
22 * User: Philippe
23 * Date: Jun 7, 2004
24 * Time: 11:41:36 PM
25 */
26
27 import java.io.Serializable;
28
29 /**
30 * A notification message that holds information about a cache event. This
31 * class is <code>Serializable</code> to allow it to be sent across the
32 * network to other machines running in a cluster.
33 *
34 * @author <a href="mailto:chris@swebtec.com">Philippe Fajeau</a>
35 */
36 public class ClusterNotification implements Serializable
37 {
38 public static final int OBJECT_UPDATED = 1;
39 public static final int OBJECT_ADDED = 2;
40 public static final int OBJECT_INVALIDATED = 3;
41
42 /**
43 * Any additional data that may be required
44 */
45 protected Serializable data;
46
47 /**
48 * The type of notification message.
49 */
50 protected int type;
51
52 protected String region;
53 protected String group;
54
55 /**
56 * Creates a new notification message object to broadcast to other
57 * listening nodes in the cluster.
58 *
59 * @param type The type of notification message.
60 * @param data Specifies the object key or group name to flush.
61 */
62 public ClusterNotification(String region,
63 String group,
64 int type,
65 Serializable data)
66 {
67 this.type = type;
68 this.data = data;
69 this.region = region;
70 this.group = group;
71 }
72
73 /**
74 * Holds any additional data that was required
75 */
76 public Serializable getData()
77 {
78 return data;
79 }
80
81 /**
82 * The type of notification message.
83 */
84 public int getType()
85 {
86 return type;
87 }
88
89 public String getRegionName()
90 {
91 return region;
92 }
93
94 public String getGroupName()
95 {
96 return group;
97 }
98
99 public String toString()
100 {
101 StringBuffer buf = new StringBuffer();
102 buf.append("type=").append(type).append(", data=").append(data);
103
104 return buf.toString();
105 }
106 }
107