Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ Receive()

int Terraria.Social.WeGame.WeGameP2PReader.Receive ( RailID user,
byte[] buffer,
int bufferOffset,
int bufferSize )
inline

Definition at line 155 of file WeGameP2PReader.cs.

156 {
157 uint num = 0u;
159 {
161 {
162 return 0;
163 }
165 while (queue.Count > 0)
166 {
167 ReadResult readResult = queue.Peek();
168 uint num2 = Math.Min((uint)bufferSize - num, readResult.Size - readResult.Offset);
169 if (num2 == 0)
170 {
171 return (int)num;
172 }
173 Array.Copy(readResult.Data, readResult.Offset, buffer, bufferOffset + num, num2);
174 if (num2 == readResult.Size - readResult.Offset)
175 {
176 _bufferPool.Enqueue(queue.Dequeue().Data);
177 }
178 else
179 {
180 readResult.Offset += num2;
181 }
182 num += num2;
183 }
184 return (int)num;
185 }
186 }
static unsafe void Copy(Array sourceArray, Array destinationArray, int length)
Definition Array.cs:624
static byte Min(byte val1, byte val2)
Definition Math.cs:912
Dictionary< RailID, Queue< ReadResult > > _pendingReadBuffers

References Terraria.Social.WeGame.WeGameP2PReader._bufferPool, Terraria.Social.WeGame.WeGameP2PReader._pendingReadBuffers, System.buffer, System.Collections.Generic.Dictionary< TKey, TValue >.ContainsKey(), System.Array.Copy(), System.Collections.Generic.Dictionary< TKey, TValue >.Count, System.Collections.Generic.Queue< T >.Enqueue(), and System.Math.Min().

Referenced by Terraria.Social.WeGame.NetSocialModule.Receive().