private void CreateOrOpen(int op, BlobParameterBuffer bpb) { lock (_database.SyncObject) { try { _database.Write(op); if (bpb != null) { _database.WriteTyped(IscCodes.isc_bpb_version1, bpb.ToArray()); } _database.Write(_transaction.Handle); _database.Write(_blobId); _database.Flush(); GenericResponse response = _database.ReadGenericResponse(); _blobId = response.BlobId; _blobHandle = response.ObjectHandle; } catch (IOException) { throw new IscException(IscCodes.isc_net_read_err); } } }