|
Akka/Scala example source code file (ClusterMessages.proto)
The ClusterMessages.proto Akka example source code
/**
* Copyright (C) 2009-2014 Typesafe Inc. <http://www.typesafe.com>
*/
option java_package = "akka.cluster.protobuf.msg";
option optimize_for = SPEED;
/****************************************
* Cluster User Messages
****************************************/
/**
* Leave
* Sends an Address
*/
/**
* Down
* Sends an Address
*/
/****************************************
* Internal Cluster Action Messages
****************************************/
/**
* Join
*/
message Join {
required UniqueAddress node = 1;
repeated string roles = 2;
}
/**
* Welcome, reply to Join
*/
message Welcome {
required UniqueAddress from = 1;
required Gossip gossip = 2;
}
/**
* InitJoin
* Sends Empty
*/
/**
* InitJoinAck
* Sends an Address
*/
/**
* InitJoinNack
* Sends an Address
*/
/****************************************
* Cluster Heartbeat Messages
****************************************/
/**
* Heartbeat
* Sends an Address
*/
/**
* HeartbeatRsp
* Sends an UniqueAddress
*/
/****************************************
* Cluster Gossip Messages
****************************************/
/**
* Gossip Envelope
*/
message GossipEnvelope {
required UniqueAddress from = 1;
required UniqueAddress to = 2;
required bytes serializedGossip = 3;
}
/**
* Gossip Status
*/
message GossipStatus {
required UniqueAddress from = 1;
repeated string allHashes = 2;
required VectorClock version = 3;
}
/**
* Gossip
*/
message Gossip {
repeated UniqueAddress allAddresses = 1;
repeated string allRoles = 2;
repeated string allHashes = 3;
repeated Member members = 4;
required GossipOverview overview = 5;
required VectorClock version = 6;
}
/**
* Gossip Overview
*/
message GossipOverview {
/* This is the address indexes for the nodes that have seen this gossip */
repeated int32 seen = 1;
repeated ObserverReachability observerReachability = 2;
}
/**
* Reachability
*/
message ObserverReachability {
required int32 addressIndex = 1;
required int64 version = 4;
repeated SubjectReachability subjectReachability = 2;
}
message SubjectReachability {
required int32 addressIndex = 1;
required ReachabilityStatus status = 3;
required int64 version = 4;
}
/**
* Reachability status
*/
enum ReachabilityStatus {
Reachable = 0;
Unreachable = 1;
Terminated = 2;
}
/**
* Member
*/
message Member {
required int32 addressIndex = 1;
required int32 upNumber = 2;
required MemberStatus status = 3;
repeated int32 rolesIndexes = 4 [packed = true];
}
/**
* Member Status
*/
enum MemberStatus {
Joining = 0;
Up = 1;
Leaving = 2;
Exiting = 3;
Down = 4;
Removed = 5;
}
/**
* Vector Clock
*/
message VectorClock {
message Version {
required int32 hashIndex = 1;
required int64 timestamp = 2;
}
// the timestamp could be removed but left for test data compatibility
optional int64 timestamp = 1;
repeated Version versions = 2;
}
/****************************************
* Metrics Gossip Messages
****************************************/
/**
* Metrics Gossip Envelope
*/
message MetricsGossipEnvelope {
required Address from = 1;
required MetricsGossip gossip = 2;
required bool reply = 3;
}
/**
* Metrics Gossip
*/
message MetricsGossip {
repeated Address allAddresses = 1;
repeated string allMetricNames = 2;
repeated NodeMetrics nodeMetrics = 3;
}
/**
* Node Metrics
*/
message NodeMetrics {
enum NumberType {
Serialized = 0;
Double = 1;
Float = 2;
Integer = 3;
Long = 4;
}
message Number {
required NumberType type = 1;
optional uint32 value32 = 2;
optional uint64 value64 = 3;
optional bytes serialized = 4;
}
message EWMA {
required double value = 1;
required double alpha = 2;
}
message Metric {
required int32 nameIndex = 1;
required Number number = 2;
optional EWMA ewma = 3;
}
required int32 addressIndex = 1;
required int64 timestamp = 2;
repeated Metric metrics = 3;
}
/****************************************
* Common Datatypes and Messages
****************************************/
/**
* An empty message
*/
message Empty {
}
/**
* Defines a remote address.
*/
message Address {
required string system = 1;
required string hostname = 2;
required uint32 port = 3;
optional string protocol = 4;
}
/**
* Defines a remote address with uid.
*/
message UniqueAddress {
required Address address = 1;
required uint32 uid = 2;
}
Other Akka source code examplesHere is a short list of links related to this Akka ClusterMessages.proto source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.