public void Copy([NotNull] ref Msg src) { // Check the validity of the source. if (!src.Check()) { throw new FaultException(); } Close(); if (m_type == MsgType.Pool) { // One reference is added to shared messages. Non-shared messages // are turned into shared messages and reference count is set to 2. if (src.m_flags.HasFlag(MsgFlags.Shared)) { src.m_atomicCounter.Increase(1); } else { src.m_flags |= MsgFlags.Shared; src.m_atomicCounter.Set(2); } } this = src; }
public void Move([NotNull] ref Msg src) { // Check the validity of the source. if (!src.Check()) { throw new FaultException(); } Close(); this = src; src.InitEmpty(); }