本文整理汇总了C#中Mina.Core.Buffer.IoBuffer.Flip方法的典型用法代码示例。如果您正苦于以下问题:C# IoBuffer.Flip方法的具体用法?C# IoBuffer.Flip怎么用?C# IoBuffer.Flip使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Mina.Core.Buffer.IoBuffer
的用法示例。
在下文中一共展示了IoBuffer.Flip方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Send
public bool Send(IoBuffer output)
{
try
{
output.Flip();
var buffer = output.GetRemainingArray();
Client.Client.Send(buffer);
}
catch (Exception) { return false; }
if (handler != null)
return handler.Await();
return true;
}
示例2: ManipulateIoBuffer
private void ManipulateIoBuffer(IoSession session, IoBuffer buffer)
{
if ((buffer.Remaining > 0) && (_removeByteProbability > _rng.Next(1000)))
{
if (log.IsInfoEnabled)
log.Info(buffer.GetHexDump());
// where to remove bytes ?
int pos = _rng.Next(buffer.Remaining);
// how many byte to remove ?
int count = _rng.Next(buffer.Remaining - pos) + 1;
if (count == buffer.Remaining)
count = buffer.Remaining - 1;
IoBuffer newBuff = IoBuffer.Allocate(buffer.Remaining - count);
for (int i = 0; i < pos; i++)
newBuff.Put(buffer.Get());
buffer.Skip(count); // hole
while (newBuff.Remaining > 0)
newBuff.Put(buffer.Get());
newBuff.Flip();
// copy the new buffer in the old one
buffer.Rewind();
buffer.Put(newBuff);
buffer.Flip();
if (log.IsInfoEnabled)
{
log.Info("Removed " + count + " bytes at position " + pos + ".");
log.Info(buffer.GetHexDump());
}
}
if ((buffer.Remaining > 0) && (_changeByteProbability > _rng.Next(1000)))
{
if (log.IsInfoEnabled)
log.Info(buffer.GetHexDump());
// how many byte to change ?
int count = _rng.Next(buffer.Remaining - 1) + 1;
byte[] values = new byte[count];
_rng.NextBytes(values);
for (int i = 0; i < values.Length; i++)
{
int pos = _rng.Next(buffer.Remaining);
buffer.Put(pos, values[i]);
}
if (log.IsInfoEnabled)
{
log.Info("Modified " + count + " bytes.");
log.Info(buffer.GetHexDump());
}
}
}
示例3: InternalFlush
private void InternalFlush(INextFilter nextFilter, IoSession session, IoBuffer buf)
{
IoBuffer tmp = null;
lock (buf)
{
buf.Flip();
tmp = buf.Duplicate();
buf.Clear();
}
if (log.IsDebugEnabled)
log.Debug("Flushing buffer: " + tmp);
nextFilter.FilterWrite(session, new DefaultWriteRequest(tmp));
}