本文整理汇总了C#中Pipe.Write方法的典型用法代码示例。如果您正苦于以下问题:C# Pipe.Write方法的具体用法?C# Pipe.Write怎么用?C# Pipe.Write使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Pipe
的用法示例。
在下文中一共展示了Pipe.Write方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: OneSideClose
public void OneSideClose(string name)
{
int close_cb_called = 0;
int cl_send_cb_called = 0;
int cl_recv_cb_called = 0;
int sv_send_cb_called = 0;
int sv_recv_cb_called = 0;
var server = new PipeListener();
server.Bind(name);
server.Connection += () => {
var pipe = server.Accept();
pipe.Resume();
pipe.Read(Encoding.ASCII, (str) => {
sv_recv_cb_called++;
Assert.AreEqual("PING", str);
pipe.Write(Encoding.ASCII, "PONG", (s) => { sv_send_cb_called++; });
pipe.Close(() => { close_cb_called++; });
server.Close(() => { close_cb_called++; });
});
};
server.Listen();
Pipe client = new Pipe();
client.Connect(name, (_) => {
client.Read(Encoding.ASCII, (str) => {
cl_recv_cb_called++;
Assert.AreEqual("PONG", str);
});
client.Complete += () => {
close_cb_called++;
};
client.Resume();
client.Write(Encoding.ASCII, "PING", (s) => { cl_send_cb_called++; });
});
Assert.AreEqual(0, close_cb_called);
Assert.AreEqual(0, cl_send_cb_called);
Assert.AreEqual(0, cl_recv_cb_called);
Assert.AreEqual(0, sv_send_cb_called);
Assert.AreEqual(0, sv_recv_cb_called);
Loop.Default.Run();
Assert.AreEqual(3, close_cb_called);
Assert.AreEqual(1, cl_send_cb_called);
Assert.AreEqual(1, cl_recv_cb_called);
Assert.AreEqual(1, sv_send_cb_called);
Assert.AreEqual(1, sv_recv_cb_called);
#if DEBUG
Assert.AreEqual(1, UV.PointerCount);
#endif
}
示例2: XAttachPipe
/// <summary>
/// Register the pipe with this socket.
/// </summary>
/// <param name="pipe">the Pipe to attach</param>
/// <param name="icanhasall">if true - subscribe to all data on the pipe</param>
protected override void XAttachPipe(Pipe pipe, bool icanhasall)
{
Debug.Assert(pipe != null);
m_distribution.Attach(pipe);
// If icanhasall is specified, the caller would like to subscribe
// to all data on this pipe, implicitly.
if (icanhasall)
m_subscriptions.Add(null, 0, 0, pipe);
// if welcome message was set, write one to the pipe.
if (m_welcomeMessage.Size > 0)
{
var copy = new Msg();
copy.InitEmpty();
copy.Copy(ref m_welcomeMessage);
pipe.Write(ref copy);
pipe.Flush();
}
// The pipe is active when attached. Let's read the subscriptions from
// it, if any.
XReadActivated(pipe);
}
示例3: Write
/// <summary>
/// Write the message to the pipe. Make the pipe inactive if writing
/// fails. In such a case false is returned.
/// </summary>
private bool Write( Pipe pipe, ref Msg msg)
{
if (!pipe.Write(ref msg))
{
m_pipes.Swap(m_pipes.IndexOf(pipe), m_matching - 1);
m_matching--;
m_pipes.Swap(m_pipes.IndexOf(pipe), m_active - 1);
m_active--;
m_pipes.Swap(m_active, m_eligible - 1);
m_eligible--;
return false;
}
if (!msg.HasMore)
pipe.Flush();
return true;
}
示例4: Stress
public void Stress(string name)
{
for (int j = 0; j < 10; j++) {
int times = 10;
int close_cb_called = 0;
int cl_send_cb_called = 0;
int cl_recv_cb_called = 0;
int sv_send_cb_called = 0;
int sv_recv_cb_called = 0;
var server = new PipeListener();
server.Bind(name);
server.Connection += () => {
var pipe = server.Accept();
pipe.Resume();
pipe.Read(Encoding.ASCII, (str) => {
sv_recv_cb_called++;
Assert.AreEqual(Times("PING", times), str);
for (int i = 0; i < times; i++) {
pipe.Write(Encoding.ASCII, "PONG", (s) => { sv_send_cb_called++; });
}
pipe.Close(() => { close_cb_called++; });
server.Close(() => { close_cb_called++; });
});
};
server.Listen();
Pipe client = new Pipe();
client.Connect(name, (_) => {
client.Resume();
for (int i = 0; i < times; i++) {
client.Write(Encoding.ASCII, "PING", (s) => { cl_send_cb_called++; });
}
client.Read(Encoding.ASCII, (str) => {
cl_recv_cb_called++;
Assert.AreEqual(Times("PONG", times), str);
client.Close(() => { close_cb_called++; });
});
});
Assert.AreEqual(0, close_cb_called);
Assert.AreEqual(0, cl_send_cb_called);
Assert.AreEqual(0, cl_recv_cb_called);
Assert.AreEqual(0, sv_send_cb_called);
Assert.AreEqual(0, sv_recv_cb_called);
Loop.Default.Run();
Assert.AreEqual(3, close_cb_called);
Assert.AreEqual(times, cl_send_cb_called);
Assert.AreEqual(1, cl_recv_cb_called);
Assert.AreEqual(times, sv_send_cb_called);
Assert.AreEqual(1, sv_recv_cb_called);
#if DEBUG
Assert.AreEqual(1, UV.PointerCount);
#endif
}
}