C-DEngine 5.105

TSM Members

The TSM type exposes the following members.

Constructors


  Name Description
Public method TSM()()()()
Creates a new empty TSM - ORG and SID will NOT be set and therefore this is the fastest way to create a TSM (used by the Serializer)
Public method TSM(String, String)
Creates a new TSM with a given Engine and Command Text
Public method TSM(String, String, String)
Creates a new TSM with a given Engine and Command Text and Payload
Public method TSM(String, String, String, Int32)
Creates a new TSM with a given Engine and Command Localizable Text and Payload
Public method TSM(String, String, eMsgLevel, String)
Creates a new TSM with a given Engine and Message Text, Message Level and Payload ATTENTION: Only use this Constructor for WriteToLog() entries. ATTENTION: This constructor does NOT set the SID by default to avoid performance hit for SID creation To change this behavior you have to set "DisableFastTSMs=true" in the App.config
Public method TSM(String, String, eMsgLevel, String, Int32)
Creates a new TSM with a given Engine and Command Text and Payload
Public method TSM(String, String, eMsgLevel, DateTimeOffset, String)
Creates a new TSM with a given Engine and Command Text and Payload
Public method TSM(String, String, eMsgLevel)
Creates a new TSM with a given Engine, Message Text and Message Level. ATTENTION: Only use this Constructor for WriteToLog() entries. ATTENTION: This constructor does NOT set the SID by default to avoid performance hit for SID creation To change this behavior you have to set "DisableFastTSMs=true" in the App.config

Methods


  Name Description
Public method Acknowledged
Probes if this flag is set
Public method AddCosting
Adds an encrypted cost-ticket to the current message to the CST parameter
Public method AddHopToOrigin
Add the current station DeviceID to the list of Originators
Public method AddScopeIDFromTSM
Extracts the Scrambed ScopeID from a message and creates Topic extension
Public method Static member Clone
Make a deep clone of the Message
Public method DoesORGContain
Checks if the given Originator DeviceID is in the list of Origins
Public method DoesORGContainAny
Checks if a ; separated list of IDs is found in the Originators of this message. Only if ALL pIDs are found in the ORG, the method will return true
Public method DoesORGContainLocalHost
True if the Originator was the local machine
Public method DoNotChunk
If true, the telegram must not be chunked
Public method DoNotRelay
Probes if this flag is set
Public method EncryptPLS
Call this to Tell the C-DEngine to Encrypt the PLS automatically
Public method Equals(System.Object) (Inherited from Object.)
Protected method Finalize (Inherited from Object.)
Public method GetHash()()()()
Calculates a hash integer that defines a unique hash for the message Only LVL, ENG, the Originator and the First parameter of the TXT will be taken in account. BEWARE: there are rare occasions where two messages are considered equal although they are not. Your code should be fault tolerant to these conditions
Public method GetHash(String)
Calculates a hash integer that defines a unique hash for the message Only LVL, ENG, the Originator, OWN and the First parameter of the TXT will be taken in account. BEWARE: there are rare occasions where two messages are considered equal although they are not. Your code should be fault tolerant to these conditions The Salt can be use to add a random or other string-source to the Hash
Public method GetHashCode (Inherited from Object.)
Public method GetLastRelay
Gets the DeviceID of the last known Relay forwarding this message
Public method GetNextNode
NEW in V4: Returns the next node in GRO to optimize Route traffic
Public method GetNextSerial
Increase the FID Serial Number by one
Public method GetOriginator()()()()
Gets the first initial Originator of the message
Public method Static member GetOriginator(String)
Gets the first initial Originator from an ORG string
Public method GetOriginatorSecurityProxy
This function will return the first NodeID in the TSM that matches a Relay. Browsers do not have trust but the first-node a browser is conencted to is the browsers security proxy The function will return the Originator if no proxy was found
Public method GetOriginatorThing
Gets the initial Originating thing of the message (commonly used for replying to the originating thing)
Public method GetTotalCosts
Returns the total costs of the Message in form of a TSMTotalCost receipt
Public method GetType (Inherited from Object.)
Public method HobCount
Returns the amount of hobs this message was relayed through
Public method IsFirstNode()()()()
Returns true if this message came from the FirstNode RETIRED: Use with bool
Public method IsFirstNode(Boolean)
Returns true if this message came from the FirstNode
Public method IsPLSEncrypted
Probe if the PLS is encrypted
Public method Static member L
A Macro testing the LVL of a message If the pLogLevel is greater or equal than the DebugLevel, the macro return true
Protected method MemberwiseClone (Inherited from Object.)
Public method MsgBody
Returns the TSM Body (TXT and PLS)
Public method MsgHeader
Returns the TSM Header information
Public method NoDuplicates
Probes if this flag is set
Public method NotToSendAgain
Probes if this flag is set
Public method SendPulse
Probes if this flag is set
Public method SetAcknowledged
Similar to the WasProcessed Flag this is for custom use only
Public method SetDoNotRelay
If Set to True, the message will not be routed via the Cloud Use this for local intranet messages only
Public method SetNodeScope
Add the current NodeScope to the TSM. If the node is unscoped "" will be set
Public method SetNoDuplicates
If set to true, older messages in the SenderQueue will be removed and only the newer one will be sent. This flag is working the oposite as NotToSendAgain. Use this for tiny fast telegrams that occur very often
Public method SetNotToChunk
Set to tell the Queue not to chunk this telegram
Public method SetNotToSendAgain
If Set to true, any older package with the same HashID will be sent and the newer one will be ignored This flag is working the oposite as NoDuplicates. Use this for large Binary files or result sets.
Public method SetOriginator
Sets a new Originator to the message
Public method SetOriginatorThing(TheThing)
Sets the Originator Thing on a TSM
Public method SetOriginatorThing(Guid)
Sets a new Originator/Thing to the message
Public method SetSendPulse
If set to true, the sender expects a very fast response from the reveiver
Public method SetToCloudOnly
If set to true, this message will only be sent via the cloud. Use this for system messages that only need to be sent to clients connected via the cloud
Public method SetToNodesOnly
Messages tagged with this flag will only be routed to nodes and not to services
Public method SetToRelayOnly
If set, the message will not be relayed beyond the first Relay node.
Public method SetToServiceOnly
Messages tagged with this flag will only be routed to a Service not to a Client or End Node
Public method SetUnsubscribeAfterPublish
If Set to True, the subscription will be removed after publication This allows for Blitz Subscription and one-time-only subscriptions Once original sender has received the publication, it sends out a global CDE-UNSUBSCRIBE to the message Topic
Public method SetWasProcessed
Set this flag if you want to make sure a message is not processed several times The C-DEngine is not using this flag internally - its for custom purpose only
Public method ToAllString
Same as ToString just without the 3000 character limitation USE CAREFULLY! This can create huge memory allocation
Public method ToCloudOnly
Probes if this flag is set
Public method ToNodesOnly
Probes if this flag is set
Public method ToRelayOnly
Probes if this flag is set
Public method ToServiceOnly
Probes if this flag is set
Public method ToString
Returns a friendly representation of the TSM with 3000 characters max for PLS
Public method UnsubscribeAfterPublish
Probes if this flag is set
Public method WasProcessed
Probes if this flag is set
Public method WasSentViaCloud
Returns true if this message was sent via a Cloud Node

Fields


  Name Description
Public field CST
Costing History of the Telegram
Public field ENG
Engine (Plugin-Service Class) name that owns this message
Public field FID
Serial Number of the Message. Do NOT set! This is managed by the C-DEngine
Public field FLG

16 Flags for the message each bit has impact on how the message is transported or interpreted The default is zero (Off) on all flags.

  • Bit 1(1) = Do not Relay this message - it wil only be sent to the next node (use SetDoNotRelay(true/false) and DoNotRelay())
  • Bit 2(2) = Unsubscribe the topics this message was sent with after the message was published (use SetUnsubscribeAfterPublish() and UnsubscribeAfterPublish())
  • Bit 3(4) = Send the Message only to the Cloud and devices connected to the cloud but not inside to any on-premise services (use SetToCloudOnly() and ToCloudOnly())
  • Bit 4(8) = Send this message to the Services (Data Provider) only. Messages with this flag are not sent to Client Nodes (Use SetToServiceOnly() and ToServiceOnly())
  • Bit 5(16) = Invers of Bit 4: Send this message to Client Nodes only. Messages with this flag are not sent to Service Nodes (use SetToNodesOnly() and ToNodesOnly())
  • Bit 6(32) = A message can be processed by multiple nodes. You can set this flag to tell later nodes that this message has been processed already (Use SetWasProcessed() and WasProcessed())
  • Bit 7(64) = Similar to Bit6, this bit can be used by plug-ins for any custom use, recommendation is to use it for reply-messages to ack signaling (use SetAcknowledged() and Acknowledged())
  • Bit 8(128) = Messages with this Flag set are only sent to the first Relay and not beyond. In most cases this is the FirstNode the current node is connected to (use SetToRelayOnly() and ToRelayOnly)
  • Bit 9(256) = Messages are placed in a Queue to be sent to the next nodes. If this flag is set, the message will NOT be placed in the Queue if it is already in the queue. Only the FIRST message found will be sent and later ones are discarded. The Message Hash is used to check if a message was found in the Queue. See GetHash() - (use SetNotToSendAgain() and NotToSendAgain())
  • Bit 10(512) = Similar to bit 9 a message this flag is used to only send one message. In opposite to Bit9, this flag ensures that only the LATEST message is sent (use SetNoDuplicates() and NoDuplicates())
  • Bit 11(1024) = Enable Pulse Mode. If this bit is enabled, the Sender and Receiver switch to Adrenalin mode and try to speed up communication. Active Nodes immediately initiate another request to the connected node (Use SetSendPulse and SendPulse)
  • Bit 12(2048) = If is set if a Message was relayed over a cloud node. Only ready this bit, it wil be set by the C-DEngine automatically on the Cloud Node
  • Bit 13(4096) = WRITE-ONLY: This Flag tells the C-DEngine to Encrypt the PLS when the message is sent and automatically decrypted when it is received and before its sent to the "ProcessIncomingMessage" handler (use EncryptPLS())
  • Bit 14(8192) = READ-ONLY: This flag can be read to determine if the PLS is encrypted (Use IsPLSEncrypted())
  • Bit 15 and 16 are reserved for future use
Public field GRO
The GRO contains the reverse route back to the originator of a message. Nodes will try to send the message back along the route to the originator skipping other nodes in the mesh. If GRO is empty, the normal mesh publishing rules apply.
Public field LVL
Message Content Level (see eMsgLevels)
Public field ORG
List of Originators of the Message separated by ; The first entry is always the "Birth" place or "Originator" of the message. The first entry can also optionally include the identifier (cdeMID) of the originating thing, which can be used to send a reply to the originator via TheCommCore.PublishToOriginator. The Last entry is always the "LastRelay" to transmit the message and is also seen as the "FirstNode" (from the point of view of the receiver) Note: The ORG field should not be manipulated or parsed directly, but only through the *Originator* methods on the TSM class.
Public field OWN
The Thing Owner of the Message - should match the cdeO Meta Property
Public field PLB
Payload Binary of the Message. If PLB is NULL and PLS is set, the PLS will be compressed to binary and put in PLB for footprint reduction. If PLB is not NULL and PLS is NULL the C-DEngine will assume that the PLB contains a compressed string and uncompresses PLB to PLS automatically during receiving. If you want to send a custom PLB binary blob, set PLS to some description of the PLB content.
Public field PLS
String Payload of the Message. In oposite to the TXT this string has no character limit
Public field QDX
Queue Priority The Lower the number the higher the priority of the telegram Default is 5 QDX=0 will NOT be relayed via a cloud node and is reserved for real-time service-to-service communication between on-premise nodes
Public field SEID
Session ID corresponding to this message. DO NOT SET! The C-DEngine is managing this value This parameter is NEVER sent to a JSON/HTML5 client
Public field SID
Scrambled Scope ID of this message. use TheCommonUtils.GetScrambledScopeID() to set this field This parameter is NEVER sent to a JSON/HTML5 client
Public field TIM
Timestamp of the Message. Will be set to DateTimeOffset.Now on creation of the message but can be overwritten
Public field TXT
Text of the Message - used for Commands or other short message strings Maximum length for transmission is 476 Characters!
Public field UID
User GUID of this message. Can be used to validate messages on other nodes against centrally managed users This parameter is NEVER sent to a JSON/HTML5 client