


# IncomingMessage class













## Constructors

[IncomingMessage](../package-fidl_fidl/IncomingMessage/IncomingMessage.md) (dynamic data, List&lt;[HandleInfo](../zircon/HandleInfo-class.md)> handleInfos)

   

[IncomingMessage.fromOutgoingMessage](../package-fidl_fidl/IncomingMessage/IncomingMessage.fromOutgoingMessage.md) ([OutgoingMessage](../package-fidl_fidl/OutgoingMessage-class.md) outgoingMessage)

   

[IncomingMessage.fromReadEtcResult](../package-fidl_fidl/IncomingMessage/IncomingMessage.fromReadEtcResult.md) ([ReadEtcResult](../zircon/ReadEtcResult-class.md) result)

   


## Properties

##### [data](../package-fidl_fidl/IncomingMessage/data.md) &#8594; ByteData



  
_<span class="feature final">final</span><span class="feature inherited">inherited</span>_



##### [handleInfos](../package-fidl_fidl/IncomingMessage/handleInfos.md) &#8594; List&lt;[HandleInfo](../zircon/HandleInfo-class.md)>



  
_<span class="feature final">final</span>_



##### [hashCode](../package-fidl_fidl/IncomingMessage/hashCode.md) &#8594; int



The hash code for this object.  
_<span class="feature read-only">read-only</span><span class="feature inherited">inherited</span>_



##### [magic](../package-fidl_fidl/IncomingMessage/magic.md) &#8594; int



  
_<span class="feature read-only">read-only</span><span class="feature inherited">inherited</span>_



##### [ordinal](../package-fidl_fidl/IncomingMessage/ordinal.md) &#8594; int



  
_<span class="feature read-only">read-only</span><span class="feature inherited">inherited</span>_



##### [runtimeType](../package-fidl_fidl/IncomingMessage/runtimeType.md) &#8594; Type



A representation of the runtime type of the object.  
_<span class="feature read-only">read-only</span><span class="feature inherited">inherited</span>_



##### [strictness](../package-fidl_fidl/IncomingMessage/strictness.md) &#8594; [CallStrictness](../package-fidl_fidl/CallStrictness.md)



  
_<span class="feature read-only">read-only</span><span class="feature inherited">inherited</span>_



##### [txid](../package-fidl_fidl/IncomingMessage/txid.md) &#8594; int



  
_<span class="feature read-only">read-only</span><span class="feature inherited">inherited</span>_



##### [wireFormat](../package-fidl_fidl/IncomingMessage/wireFormat.md) &#8594; [WireFormat](../package-fidl_fidl/WireFormat.md)



  
_<span class="feature read-only">read-only</span><span class="feature inherited">inherited</span>_





## Methods

##### [closeHandles](../package-fidl_fidl/IncomingMessage/closeHandles.md)() void



  




##### [hexDump](../package-fidl_fidl/IncomingMessage/hexDump.md)() void



  
_<span class="feature inherited">inherited</span>_



##### [isCompatible](../package-fidl_fidl/IncomingMessage/isCompatible.md)() bool



  
_<span class="feature inherited">inherited</span>_



##### [noSuchMethod](../package-fidl_fidl/IncomingMessage/noSuchMethod.md)(Invocation invocation) dynamic



Invoked when a non-existent method or property is accessed.  
_<span class="feature inherited">inherited</span>_



##### [toString](../package-fidl_fidl/IncomingMessage/toString.md)() String



A string representation of this object.  
_<span class="feature override">override</span>_





## Operators

##### [operator ==](../package-fidl_fidl/IncomingMessage/operator_equals.md)(Object other) bool



The equality operator.  
_<span class="feature inherited">inherited</span>_















