public void Write_String_As_Binary(string s) { byte[] str = Encoding.UTF8.GetBytes(s); byte[] want = BuildBinBuffer(str); byte[] got; using (var os = new OtpOutputStream()) { os.WriteStringAsBinary(s); Assert.AreEqual(want.Length, os.Position); got = os.ToArray(); } CollectionAssert.AreEqual(want, got); }
public void Read_Binary(string want) { byte[] buf = null; using (var os = new OtpOutputStream()) { os.WriteStringAsBinary(want); buf = os.ToArray(); } using (var s = new OtpInputStream(buf)) { string got = s.ReadBinaryAsString(); Assert.AreEqual(want, got); } }
public void Can_Parse_RpbErrorResp_In_2_Tuple_With_String() { byte[] b = null; using (var os = new OtpOutputStream()) { os.WriteTupleHead(2); os.WriteAtom(TtbErrorDecoder.RpbErrorRespAtom); os.WriteStringAsBinary(ErrMsg); os.Flush(); b = os.ToArray(); } var ex = Assert.Throws <RiakException>(() => new TsTtbResp(b)); Assert.IsTrue(ex.Message.Contains(ErrMsg)); }
public override RiakReq ConstructRequest(bool useTtb) { if (useTtb) { expectedCode = MessageCode.TsTtbMsg; usingTtb = true; using (var os = new OtpOutputStream()) { os.WriteByte(OtpExternal.VersionTag); // TsQueryReq is a 4-tuple: {'tsqueryreq', TsInterpolation, boolIsStreaming, bytesCoverContext} os.WriteTupleHead(4); os.WriteAtom(TsQueryReqAtom); // TsInterpolation is a 3-tuple // {'tsinterpolation', query, []} empty list is interpolations os.WriteTupleHead(3); os.WriteAtom(TsInterpolationAtom); os.WriteStringAsBinary(CommandOptions.Query); os.WriteNil(); os.WriteBoolean(false); os.WriteAtom(UndefinedAtom); os.Flush(); return(new TsTtbMsg(os.ToArray())); } } else { var req = new TsQueryReq(); req.query = new TsInterpolation { @base = CommandOptions.Query }; // NB: always stream, collect results unless callback is passed. req.stream = true; return(req); } }
// TODO FUTURE this all really should be in a codec public override RiakReq ConstructRequest(bool useTtb) { RiakReq rv; if (useTtb) { usingTtb = true; expectedCode = MessageCode.TsTtbMsg; byte[] buffer; string tableName = CommandOptions.Table; ICollection <Row> rows = CommandOptions.Rows; using (var os = new OtpOutputStream()) { os.WriteByte(OtpExternal.VersionTag); // {tsputreq, tableName, emptyList, rows} os.WriteTupleHead(4); os.WriteAtom(TsPutReqAtom); os.WriteStringAsBinary(tableName); os.WriteNil(); if (rows.Count > 0) { os.WriteListHead(rows.Count); foreach (Row r in CommandOptions.Rows) { os.WriteTupleHead(r.Cells.Count); foreach (Cell c in r.Cells) { c.ToTtbCell(os); } } os.WriteNil(); } else { os.WriteNil(); } buffer = os.ToArray(); } rv = new TsTtbMsg(buffer); } else { var req = new TsPutReq(); req.table = CommandOptions.Table; if (EnumerableUtil.NotNullOrEmpty(CommandOptions.Columns)) { req.columns.AddRange(CommandOptions.Columns.Select(c => c.ToTsColumn())); } req.rows.AddRange(CommandOptions.Rows.Select(r => r.ToTsRow())); rv = req; } return(rv); }