Exemple #1
0
        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);
        }
Exemple #2
0
        /// <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);
            }
        }
Exemple #3
0
        /// <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);
            }
        }
Exemple #5
0
        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);
            }
        }
Exemple #6
0
 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);
     }
 }