private int _Read(byte[] b) { SDBMessage sdbMessage = new SDBMessage(); // MsgHeader sdbMessage.OperationCode = Operation.MSG_BS_LOB_READ_REQ; sdbMessage.NodeID = SequoiadbConstants.ZERO_NODEID; sdbMessage.RequestID = 0; // the rest part of _MsgOpLOb sdbMessage.Version = SequoiadbConstants.DEFAULT_VERSION; sdbMessage.W = SequoiadbConstants.DEFAULT_W; sdbMessage.Padding = (short)0; sdbMessage.Flags = SequoiadbConstants.DEFAULT_FLAGS; sdbMessage.ContextIDList = new List <long>(); sdbMessage.ContextIDList.Add(_contextID); sdbMessage.BsonLen = 0; // MsgLobTuple sdbMessage.LobLen = (uint)b.Length; sdbMessage.LobSequence = SDB_LOB_DEFAULT_SEQ; sdbMessage.LobOffset = _readOffset; // build send msg byte[] request = SDBMessageHelper.BuildReadLobRequest(sdbMessage, _isBigEndian); // send msg _connection.SendMessage(request); // receive and extract return msg from engine SDBMessage rtnSDBMessage = SDBMessageHelper.MsgExtractReadLobReply(_connection.ReceiveMessage(_isBigEndian), _isBigEndian); // check the result int flags = rtnSDBMessage.Flags; int errCode = new BaseException("SDB_DMS_EOC").ErrorCode; if (errCode == flags) { return(-1); } else if (0 != flags) { throw new BaseException(flags); } // return the result byte[] lobData = rtnSDBMessage.LobBuff; Array.Copy(lobData, b, lobData.Length); _readOffset += lobData.Length; return(lobData.Length); }
/** \fn DBCursor ListLobs() * \brief List all of the lobs in current collection * \retval DBCursor of lobs * \exception SequoiaDB.BaseException * \exception System.Exception */ public DBCursor ListLobs() { DBCursor cursor = null; // build command string command = SequoiadbConstants.ADMIN_PROMPT + SequoiadbConstants.LIST_LOBS_CMD; // build a bson to send BsonDocument newObj = new BsonDocument(); newObj.Add(SequoiadbConstants.FIELD_COLLECTION, collectionFullName); // run command BsonDocument dummyObj = new BsonDocument(); SDBMessage rtnSDBMessage = AdminCommand(command, newObj, dummyObj, dummyObj, dummyObj, 0, -1, 0); // check the return flag int flags = rtnSDBMessage.Flags; if (flags != 0) { int errCode = new BaseException("SDB_DMS_EOC").ErrorCode; if (errCode == flags) { return cursor; } else { throw new BaseException(flags); } } cursor = new DBCursor(rtnSDBMessage, this); return cursor; }
private int _Read(byte[] b) { SDBMessage sdbMessage = new SDBMessage(); // MsgHeader sdbMessage.OperationCode = Operation.MSG_BS_LOB_READ_REQ; sdbMessage.NodeID = SequoiadbConstants.ZERO_NODEID; sdbMessage.RequestID = 0; // the rest part of _MsgOpLOb sdbMessage.Version = SequoiadbConstants.DEFAULT_VERSION; sdbMessage.W = SequoiadbConstants.DEFAULT_W; sdbMessage.Padding = (short)0; sdbMessage.Flags = SequoiadbConstants.DEFAULT_FLAGS; sdbMessage.ContextIDList = new List<long>(); sdbMessage.ContextIDList.Add(_contextID); sdbMessage.BsonLen = 0; // MsgLobTuple sdbMessage.LobLen = (uint)b.Length; sdbMessage.LobSequence = SDB_LOB_DEFAULT_SEQ; sdbMessage.LobOffset = _readOffset; // build send msg byte[] request = SDBMessageHelper.BuildReadLobRequest(sdbMessage, _isBigEndian); // send msg _connection.SendMessage(request); // receive and extract return msg from engine SDBMessage rtnSDBMessage = SDBMessageHelper.MsgExtractReadLobReply(_connection.ReceiveMessage(_isBigEndian), _isBigEndian); // check the result int flags = rtnSDBMessage.Flags; int errCode = new BaseException("SDB_DMS_EOC").ErrorCode; if ( errCode == flags) { return -1; } else if (0 != flags) { throw new BaseException(flags); } // return the result byte[] lobData = rtnSDBMessage.LobBuff; Array.Copy(lobData, b, lobData.Length); _readOffset += lobData.Length; return lobData.Length; }
public void ExceptionTest() { string errorType = "SDB_DMS_EOC"; BaseException ex = new BaseException(errorType); Assert.IsTrue(ex.Message.ToString().Equals("End of collection")); }