public TaskStatusProto ToProto() { Check(); TaskStatusProto taskStatusProto = new TaskStatusProto() { context_id = _contextId, task_id = _taskId, state = GetProtoState(), }; if (_result.IsPresent()) { taskStatusProto.result = ByteUtilities.CopyBytesFrom(_result.Value); } else if (_lastException.IsPresent()) { //final Encoder<Throwable> codec = new ObjectSerializableCodec<>(); //final byte[] error = codec.encode(_lastException.get()); byte[] error = ByteUtilities.StringToByteArrays(_lastException.Value.ToString()); taskStatusProto.result = ByteUtilities.CopyBytesFrom(error); } else if (_state == TaskState.Running) { foreach (TaskMessage message in GetMessages()) { TaskStatusProto.TaskMessageProto taskMessageProto = new TaskStatusProto.TaskMessageProto() { source_id = message.MessageSourceId, message = ByteUtilities.CopyBytesFrom(message.Message), }; taskStatusProto.task_message.Add(taskMessageProto); } } return(taskStatusProto); }
/// <summary> /// get context's status in protocol buffer /// </summary> /// <returns>this context's status in protocol buffer form.</returns> public ContextStatusProto GetContextStatus() { lock (_contextLifeCycle) { var contextStatusProto = new ContextStatusProto { context_id = Id, context_state = _contextState, }; if (_parentContext.IsPresent()) { contextStatusProto.parent_id = _parentContext.Value.Id; } foreach (var sourceMessage in _contextLifeCycle.ContextMessageSources.Where(src => src.Message.IsPresent()).Select(src => src.Message.Value)) { var contextMessageProto = new ContextStatusProto.ContextMessageProto { source_id = sourceMessage.MessageSourceId, message = ByteUtilities.CopyBytesFrom(sourceMessage.Bytes), }; contextStatusProto.context_message.Add(contextMessageProto); } return(contextStatusProto); } }
/// <summary> /// get context's status in protocol buffer /// </summary> /// <returns>this context's status in protocol buffer form.</returns> public ContextStatusProto GetContextStatus() { lock (_contextLifeCycle) { var contextStatusProto = new ContextStatusProto { context_id = Id, context_state = _contextState, }; if (_parentContext.IsPresent()) { contextStatusProto.parent_id = _parentContext.Value.Id; } foreach (var source in _contextLifeCycle.ContextMessageSources) { // Note: Please do not convert to LINQ expression, as source.Message // may not return the same object in subsequent Get calls. var sourceMessage = source.Message; if (sourceMessage.IsPresent()) { var contextMessageProto = new ContextStatusProto.ContextMessageProto { source_id = sourceMessage.Value.MessageSourceId, message = ByteUtilities.CopyBytesFrom(sourceMessage.Value.Bytes), }; contextStatusProto.context_message.Add(contextMessageProto); } } return(contextStatusProto); } }
/// <summary> /// get context's status in protocol buffer /// </summary> /// <returns>this context's status in protocol buffer form.</returns> public ContextStatusProto GetContextStatus() { lock (_contextLifeCycle) { ContextStatusProto contextStatusProto = new ContextStatusProto() { context_id = Id, context_state = _contextState, }; if (_parentContext.IsPresent()) { contextStatusProto.parent_id = _parentContext.Value.Id; } foreach (IContextMessageSource source in _contextLifeCycle.ContextMessageSources) { Optional <ContextMessage> contextMessageOptional = source.Message; if (contextMessageOptional.IsPresent()) { ContextStatusProto.ContextMessageProto contextMessageProto = new ContextStatusProto.ContextMessageProto() { source_id = contextMessageOptional.Value.MessageSourceId, }; contextMessageProto.message = ByteUtilities.CopyBytesFrom(contextMessageOptional.Value.Bytes); contextStatusProto.context_message.Add(contextMessageProto); } } return(contextStatusProto); } }
public TaskStatusProto ToProto() { // This is locked because the Task continuation thread which sets the // result is potentially different from the HeartBeat thread. lock (_heartBeatManager) { Check(); TaskStatusProto taskStatusProto = new TaskStatusProto() { context_id = ContextId, task_id = TaskId, state = GetProtoState() }; if (_result.IsPresent()) { taskStatusProto.result = ByteUtilities.CopyBytesFrom(_result.Value); } else if (_lastException.IsPresent()) { byte[] error; try { error = ByteUtilities.SerializeToBinaryFormat(_lastException.Value); } catch (SerializationException se) { error = ByteUtilities.SerializeToBinaryFormat( NonSerializableTaskException.UnableToSerialize(_lastException.Value, se)); } var avroFailedTask = new AvroFailedTask { identifier = _taskId, cause = error, data = ByteUtilities.StringToByteArrays(_lastException.Value.ToString()), message = _lastException.Value.Message }; taskStatusProto.result = AvroJsonSerializer <AvroFailedTask> .ToBytes(avroFailedTask); } else if (_state == TaskState.Running) { foreach (TaskMessage message in GetMessages()) { TaskStatusProto.TaskMessageProto taskMessageProto = new TaskStatusProto.TaskMessageProto() { source_id = message.MessageSourceId, message = ByteUtilities.CopyBytesFrom(message.Message), }; taskStatusProto.task_message.Add(taskMessageProto); } } return(taskStatusProto); } }
public TaskStatusProto ToProto() { // This is locked because the Task continuation thread which sets the // result is potentially different from the HeartBeat thread. lock (_stateLock) { Check(); TaskStatusProto taskStatusProto = new TaskStatusProto() { context_id = ContextId, task_id = TaskId, state = GetProtoState() }; if (_result.IsPresent()) { taskStatusProto.result = ByteUtilities.CopyBytesFrom(_result.Value); } else if (_lastException.IsPresent()) { byte[] error = ByteUtilities.StringToByteArrays(_lastException.Value.ToString()); taskStatusProto.result = ByteUtilities.CopyBytesFrom(error); } else if (_state == TaskState.Running) { foreach (TaskMessage message in GetMessages()) { TaskStatusProto.TaskMessageProto taskMessageProto = new TaskStatusProto.TaskMessageProto() { source_id = message.MessageSourceId, message = ByteUtilities.CopyBytesFrom(message.Message), }; taskStatusProto.task_message.Add(taskMessageProto); } } return(taskStatusProto); } }