/*
* QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
* Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace QuantConnect.Packets
{
///
/// Base class for packet messaging system
///
public class Packet
{
///
/// Packet type defined by a string enum
///
public PacketType Type { get; set; } = PacketType.None;
///
/// User unique specific channel endpoint to send the packets
///
public virtual string Channel { get; set; } = "";
///
/// Initialize the base class and setup the packet type.
///
/// PacketType for the class.
public Packet(PacketType type)
{
Channel = "";
Type = type;
}
}
///
/// Classifications of internal packet system
///
[JsonConverter(typeof(StringEnumConverter))]
public enum PacketType
{
///
/// Default, unset:
///
None,
///
/// Base type for backtest and live work
///
AlgorithmNode,
///
/// Autocomplete Work Packet
///
AutocompleteWork,
///
/// Result of the Autocomplete Job:
///
AutocompleteResult,
///
/// Controller->Backtest Node Packet:
///
BacktestNode,
///
/// Packet out of backtest node:
///
BacktestResult,
///
/// API-> Controller Work Packet:
///
BacktestWork,
///
/// Controller -> Live Node Packet:
///
LiveNode,
///
/// Live Node -> User Packet:
///
LiveResult,
///
/// API -> Controller Packet:
///
LiveWork,
///
/// Node -> User Algo Security Types
///
SecurityTypes,
///
/// Controller -> User Error in Backtest Settings:
///
BacktestError,
///
/// Nodes -> User Algorithm Status Packet:
///
AlgorithmStatus,
///
/// API -> Compiler Work Packet:
///
BuildWork,
///
/// Compiler -> User Build Success
///
BuildSuccess,
///
/// Compiler -> User, Compile Error
///
BuildError,
///
/// Node -> User Algorithm Runtime Error
///
RuntimeError,
///
/// Error is an internal handled error packet inside users algorithm
///
HandledError,
///
/// Nodes -> User Log Message
///
Log,
///
/// Nodes -> User Debug Message
///
Debug,
///
/// Nodes -> User, Order Update Event
///
OrderEvent,
///
/// Boolean true/false success
///
Success,
///
/// History live job packets
///
History,
///
/// Result from a command
///
CommandResult,
///
/// Hook from git hub
///
GitHubHook,
///
/// Documentation result from docs server
///
DocumentationResult,
///
/// Documentation request to the docs server
///
Documentation,
///
/// Debug packet generated by Lean
///
SystemDebug,
///
/// Packet containing insights generated by the algorithm
///
AlphaResult,
///
/// Alpha API -> Controller packet
///
AlphaWork,
///
/// Alpha Controller -> Alpha Node packet
///
AlphaNode,
///
/// Packet containing list of algorithms to run as a regression test
///
RegressionAlgorithm,
///
/// Packet containing a heartbeat
///
AlphaHeartbeat,
///
/// Used when debugging to send status updates
///
DebuggingStatus,
///
/// Optimization Node Packet:
///
OptimizationNode,
///
/// Optimization Estimate Packet:
///
OptimizationEstimate,
///
/// Optimization work status update
///
OptimizationStatus,
///
/// Optimization work result
///
OptimizationResult,
///
/// Aggregated packets
///
Aggregated,
///
/// Query the language model
///
LanguageModelQuery,
///
/// Send feedback to a language model response
///
LanguageModelFeedback,
///
/// The language models response
///
LanguageModelResponse,
///
/// Language model code analysis
///
LanguageModelCodeAnalysis,
///
/// Language model chat work
///
LanguageModelChatWork,
///
/// Language model chat response
///
LanguageModelChatResponse,
///
/// Algorithm name update
///
AlgorithmNameUpdate,
///
/// Algorithm tags update
///
AlgorithmTagsUpdate,
///
/// Research job packet
///
ResearchNode,
///
/// Organization update
///
OrganizationUpdate,
///
/// Compiler -> User Build Warnings
///
BuildWarning,
///
/// Language model function call related packet
///
LanguageModelFunctionCall,
///
/// Language model agent message
///
LanguageModelAgentMessage,
///
/// Agent job packet
///
AgentNode
}
}