# ProcessorInstance.AvailableData

> A temporary collection of data available for enumeration.

## Definition

* **Type:** Struct
* **Namespace:** [UnityEngine.Audio](/engine/6000.6/script-reference/unityengine/audio.md)
* **Assembly:** UnityEngine.AudioModule

```csharp
public ref struct ProcessorInstance.AvailableData
```

## Remarks

You can enumerate the [ProcessorInstance.AvailableData.Element](/engine/6000.6/script-reference/unityengine/audio/processorinstance/availabledataelement.md)s within using a **foreach** loop over this collection.

Additional Resources: [ProcessorInstance.Pipe.SendData](/engine/6000.6/script-reference/unityengine/audio/processorinstance/pipe/senddata.md)

## Examples

```csharp
using System;
using UnityEngine.Audio;
using static UnityEngine.Audio.ProcessorInstance;
using static UnityEngine.Audio.GeneratorInstance;
using Unity.IntegerTime;

class AvailableDataExamples
{
    struct ThingToCommunicate
    {
        public float MyData;
    }

    struct OtherThing
    {
        public int MyOtherData;
    }

    internal struct ProcessorInvestigatingData : GeneratorInstance.IRealtime
    {
        public void Update(UpdatedDataContext context, Pipe pipe)
        {
            float myData = 0f;

            foreach (var element in pipe.GetAvailableData(context))
            {
                if (element.TryGetData(out ThingToCommunicate thing))
                {
                    myData = thing.MyData;
                }
                else if (element.TryGetData(out OtherThing otherThing))
                {
                    myData = MathF.PI * otherThing.MyOtherData;
                }
            }
        }

        internal struct Control : GeneratorInstance.IControl<ProcessorInvestigatingData>
        {
            public void Update(ControlContext context, Pipe pipe)
            {
                float myData = 0f;

                foreach (var element in pipe.GetAvailableData(context))
                {
                    if (element.TryGetData(out ThingToCommunicate thing))
                    {
                        myData = thing.MyData;
                    }
                    else if (element.TryGetData(out OtherThing otherThing))
                    {
                        myData = MathF.PI * otherThing.MyOtherData;
                    }
                }
            }

            public void Dispose(ControlContext context, ref ProcessorInvestigatingData processor) { }

            public ProcessorInstance.Response OnMessage(ControlContext context, Pipe pipe, Message message)
                => ProcessorInstance.Response.Unhandled;

            public void Configure(ControlContext context, ref ProcessorInvestigatingData processor, in AudioFormat format, out Setup setup, ref Properties properties)
                => setup = new(format);
        }

        public bool isFinite => false;
        public bool isRealtime => false;
        public DiscreteTime? length => null;
        public Result Process(in RealtimeContext ctx, Pipe pipe, ChannelBuffer buf, Arguments args) => 0;
    }
}
```

## Structs

| Struct                                                                                                                                 | Description                                                                                                                                                                                                                    |
| -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [ProcessorInstance.AvailableData.Element](/engine/6000.6/script-reference/unityengine/audio/processorinstance/availabledataelement.md) | A piece of temporary immutable type-erased data that was sent from [ProcessorInstance.Pipe.SendData](/engine/6000.6/script-reference/unityengine/audio/processorinstance/pipe/senddata.md), received on likely another thread. |
