Ejemplo n.º 1
0
	void beginflush()
	{
		if(writing)return;
		write_n=sendbuffer.BeginDequeue();
		if(write_n==-1) return;
		writing=true;
		st.BeginWrite(sendbuffer.GetPointer(write_n), Stream::Callback([this](void* v, Stream* s)
		{
			sendbuffer.EndDequeue(write_n);
			writing=false;
			beginflush();
		}));
	}
Ejemplo n.º 2
0
	void send(const BufferRef& buf)
	{
		if(buf.Length<=0)return;
		int tmp=sendbuffer.BeginAppend();
		if(tmp<0)
		{
			WARN(2,"buffer overrun"); return;
		}
		Buffer& b=sendbuffer.GetPointer(tmp);
		b=Buffer(buf.Length);
		memcpy(b.Data, buf.Data, buf.Length);
		sendbuffer.EndAppend(tmp);
		beginflush();
	}