public void MarkSnapshot( long snapshotTypeId, long logPosition, long leadershipTermId, int snapshotIndex, SnapshotMark snapshotMark, ClusterTimeUnit timeUnit, int appVersion) { idleStrategy.Reset(); while (true) { long result = publication.TryClaim(ENCODED_MARKER_LENGTH, bufferClaim); if (result > 0) { snapshotMarkerEncoder .WrapAndApplyHeader(bufferClaim.Buffer, bufferClaim.Offset, messageHeaderEncoder) .TypeId(snapshotTypeId) .LogPosition(logPosition) .LeadershipTermId(leadershipTermId) .Index(snapshotIndex) .Mark(snapshotMark) .TimeUnit(timeUnit) .AppVersion(appVersion); bufferClaim.Commit(); break; } CheckResultAndIdle(result); } }
public void MarkEnd( long snapshotTypeId, long logPosition, long leadershipTermId, int snapshotIndex, ClusterTimeUnit timeUnit, int appVersion) { MarkSnapshot( snapshotTypeId, logPosition, leadershipTermId, snapshotIndex, SnapshotMark.END, timeUnit, appVersion); }
public void OnNewLeadershipTermEvent( long leadershipTermId, long logPosition, long timestamp, long termBaseLogPosition, int leaderMemberId, int logSessionId, ClusterTimeUnit timeUnit, int appVersion) { Console.WriteLine($"OnNewLeadershipTerm: leadershipTermId={leadershipTermId}"); }
public SnapshotMarkerEncoder TimeUnit(ClusterTimeUnit value) { _buffer.PutInt(_offset + 32, (int)value, ByteOrder.LittleEndian); return(this); }
public NewLeadershipTermEventEncoder TimeUnit(ClusterTimeUnit value) { _buffer.PutInt(_offset + 40, (int)value, ByteOrder.LittleEndian); return(this); }
public ControlledFragmentHandlerAction OnFragment(IDirectBuffer buffer, int offset, int length, Header header) { messageHeaderDecoder.Wrap(buffer, offset); int schemaId = messageHeaderDecoder.SchemaId(); if (schemaId != MessageHeaderDecoder.SCHEMA_ID) { throw new ClusterException("expected schemaId=" + MessageHeaderDecoder.SCHEMA_ID + ", actual=" + schemaId); } int templateId = messageHeaderDecoder.TemplateId(); switch (templateId) { case SnapshotMarkerDecoder.TEMPLATE_ID: snapshotMarkerDecoder.Wrap( buffer, offset + MessageHeaderDecoder.ENCODED_LENGTH, messageHeaderDecoder.BlockLength(), messageHeaderDecoder.Version()); long typeId = snapshotMarkerDecoder.TypeId(); if (typeId != ClusteredServiceContainer.Configuration.SNAPSHOT_TYPE_ID) { throw new ClusterException("unexpected snapshot type: " + typeId); } switch (snapshotMarkerDecoder.Mark()) { case SnapshotMark.BEGIN: if (inSnapshot) { throw new ClusterException("already in snapshot"); } inSnapshot = true; appVersion = snapshotMarkerDecoder.AppVersion(); timeUnit = snapshotMarkerDecoder.TimeUnit() == ClusterTimeUnit.NULL_VALUE ? ClusterTimeUnit.MILLIS : snapshotMarkerDecoder.TimeUnit(); return(ControlledFragmentHandlerAction.CONTINUE); case SnapshotMark.END: if (!inSnapshot) { throw new ClusterException("missing begin snapshot"); } isDone = true; return(ControlledFragmentHandlerAction.BREAK); } break; case ClientSessionDecoder.TEMPLATE_ID: clientSessionDecoder.Wrap( buffer, offset + MessageHeaderDecoder.ENCODED_LENGTH, messageHeaderDecoder.BlockLength(), messageHeaderDecoder.Version()); string responseChannel = clientSessionDecoder.ResponseChannel(); byte[] encodedPrincipal = new byte[clientSessionDecoder.EncodedPrincipalLength()]; clientSessionDecoder.GetEncodedPrincipal(encodedPrincipal, 0, encodedPrincipal.Length); agent.AddSession( clientSessionDecoder.ClusterSessionId(), clientSessionDecoder.ResponseStreamId(), responseChannel, encodedPrincipal); break; } return(ControlledFragmentHandlerAction.CONTINUE); }