public IStyxMessage GetMessage() { IStyxMessage res = null; switch (type) { case MessageType.Twalk: case MessageType.Rwalk: res = new StyxWalkMessage(); break; case MessageType.Tversion: case MessageType.Rversion: res = new StyxVersionMessage(); break; case MessageType.Tclunk: case MessageType.Rclunk: res = new StyxClunkMessage(); break; case MessageType.Tstat: case MessageType.Rstat: res = new StyxStatMessage(); break; case MessageType.Topen: case MessageType.Ropen: res = new StyxOpenMessage(); break; case MessageType.Tread: case MessageType.Rread: res = new StyxReadMessage(); break; case MessageType.Tattach: case MessageType.Rattach: res = new StyxAttachMessage(); break; } if (res != null) { res.SetBinary(data); } return res; }
private IStyxMessage HandleVersion(StyxVersionMessage message) { if (message.Tag != StyxMessage.NOTAG) { throw new Exception("Wrong Tag for TVersion"); } // choose minimum buffer size iobuf_size = ( message.MaxPacketSize < iobuf_size ? message.MaxPacketSize : iobuf_size ); iobuf = new byte[iobuf_size]; return new StyxVersionMessage(iobuf_size, "9P2000", false); }