["root object"] class TestRoot [id({1B013DB1-5219-4363-9E02-BD85D7E24413})] { wstring RootName; TestObjectList AllObjects; }; ["object list"] list TestObjectList [id({3F96FB26-623E-4C52-86AF-2CBC89F5C23A}), ck] { object anObject; int32 theType; }; /* the idea is to store objects of type 'TestObject' in the 'anObject' variable of the 'TestObjectList' items remark: it is no restriction! */ objecttype TestObjectList.anObject(TestObject); // this class has no description class TestObject [id({B06E97E6-15D7-4B70-B94F-679F858E0FE8})] { wstring Text; int32 Number; };
"root object"
class
TestRoot
wstring
TestObjectList
"object list"
list
E
object
int32
/* the idea is to store objects of type 'TestObject' in the 'anObject' variable of the 'TestObjectList' items remark: it is no restriction! */
objecttype
TestObject
// this class has no description
#include "pch.h" #include "resource.h" #include <DataFS\Client\DataFS Client.h> //using namespace DataFS; int _tmain(int argc, wchar_t* argv[]) { const wchar_t* strServerAddress = argv[1]; UINT16 usServerPort = (UINT16)_wtoi(argv[2]); GUID guidDomainId; ::CLSIDFromString(argv[3], &guidDomainId); // connect DataFS::InitializeThread(); DataFS::Connection* pConnection; DataFS::Connection_Create(&pConnection); if(FAILED(pConnection->ConnectW(strServerAddress, usServerPort, NULL))) { DataFS::Connection_Destroy(pConnection); DataFS::UninitializeThread(); return -1; } // extend schema HRSRC hBdtd = ::FindResource(::GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_RT_BDTD1), L"RT_BDTD"); void* pBdtd = ::LockResource(::LoadResource(::GetModuleHandle(NULL), hBdtd)); int iBdtdSize = ::SizeofResource(::GetModuleHandle(NULL), hBdtd); DataFS::USchemaEdit* pSchema; if(SUCCEEDED(pConnection->QuerySchemaEdit(&pSchema, &guidDomainId))) { pSchema->CreateFromBinary(pBdtd, iBdtdSize); pSchema->Commit(); pSchema->Release(); } pConnection->Disconnect(); DataFS::Connection_Destroy(pConnection); DataFS::UninitializeThread(); return 0; }
#include
"pch.h"
"resource.h"
<DataFS\Client\DataFS Client.h>
//using namespace DataFS;
int
wchar_t
const
UINT16
GUID
// connect
Connection
if
FAILED
NULL
return
// extend schema
HRSRC
"RT_BDTD"
void
USchemaEdit
SUCCEEDED
using System; using System.IO; namespace SchemaPrep { class SchemaPrep { static void Main(string[] args) { String strServerAddress = args[0]; UInt16 usServerPort = UInt16.Parse(args[1]); Guid guidDomainId = Guid.Parse(args[2]); // connect DataFS.ThreadInit.InitializeThread(); DataFS.Connection pConnection = DataFS.Connection.Create(); if (0 > (pConnection.Connect(strServerAddress, usServerPort, null))) { DataFS.Connection.Destroy(pConnection); DataFS.ThreadInit.UninitializeThread(); return; } // extend schema Stream sBdtd = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("DataDefinition"); Byte[] pBdtd = new Byte[sBdtd.Length]; sBdtd.Read(pBdtd, 0, (int)sBdtd.Length); DataFS.USchemaEdit pSchema; if (0 <= (pConnection.QuerySchemaEdit(out pSchema, guidDomainId))) { pSchema.CreateFromBinary(pBdtd); pSchema.Commit(); pSchema.Dispose(); } pConnection.Disconnect(); DataFS.Connection.Destroy(pConnection); DataFS.ThreadInit.UninitializeThread(); } } }
using
namespace
static
string
String
UInt16
Guid
ThreadInit
null
Stream
Assembly
"DataDefinition"
Byte
new
out
#import <DataDefinition.bdtd> object TestRoot { TestRoot { RootName [ get, set ]; } };
#import
<DataDefinition.bdtd>
#include "pch.h" #include <DataFS\Access\DataFS Access.h> using namespace DataFSAccess; #include "_data\PrepareDefinition.h" // {56F8EB44-B7E3-4564-B9A6-22E5E1B9110C} const GUID guidRootName = { 0x56f8eb44, 0xb7e3, 0x4564, { 0xb9, 0xa6, 0x22, 0xe5, 0xe1, 0xb9, 0x11, 0xc } }; int _tmain(int argc, wchar_t* argv[]) { const wchar_t* strServerAddress = argv[1]; UINT16 usServerPort = (UINT16)_wtoi(argv[2]); GUID guidDomainId; ::CLSIDFromString(argv[3], &guidDomainId); UINT32 ulStorageId = 0; // connect InitializeThread(); Connection* pConnection = Connection_Create(); if(FAILED(pConnection->Initialize(&guidDomainId))) { Connection_Destroy(pConnection); UninitializeThread(); return -1; } if(FAILED(pConnection->Connect(strServerAddress, usServerPort, NULL))) { pConnection->Uninitialize(); Connection_Destroy(pConnection); UninitializeThread(); return -1; } if(FAILED(pConnection->QueryStorage(ulStorageId, false))) { pConnection->DisconnectAll(); pConnection->Uninitialize(); Connection_Destroy(pConnection); UninitializeThread(); return -1; } // build domain WDomain* pWDomain = Domain_Create(); if(FAILED(pWDomain->Initialize(pConnection, 0))) { Domain_Destroy(pWDomain); pConnection->ReleaseAllStorages(); pConnection->DisconnectAll(); pConnection->Uninitialize(); Connection_Destroy(pConnection); UninitializeThread(); return -1; } // bind types PrepareDefinition::Bind(pWDomain); // create named object TestRoot* pRootObject; TestRoot::Create(&pRootObject, pWDomain, &DataFS::OBJECTID_NULL); pRootObject->SetRootName(L"first test root"); pRootObject->Store(); pWDomain->InsertNamedLink(&pRootObject->BuildLink(true), &guidRootName, L"first entry point"); pWDomain->Execute(Transaction::Store, NULL); pRootObject->Release(); // unbind types PrepareDefinition::Unbind(); // destroy domain pWDomain->Uninitialize(); Domain_Destroy(pWDomain); // disconnect pConnection->ReleaseAllStorages(); pConnection->DisconnectAll(); pConnection->Uninitialize(); Connection_Destroy(pConnection); UninitializeThread(); return 0; }
<DataFS\Access\DataFS Access.h>
"_data\PrepareDefinition.h"
// {56F8EB44-B7E3-4564-B9A6-22E5E1B9110C}
UINT32
false
// build domain
WDomain
// bind types
PrepareDefinition
// create named object
"first test root"
true
"first entry point"
Transaction
// unbind types
// destroy domain
// disconnect
using System; using DataFSAccess; namespace StoragePrep { class StoragePrep { static readonly Guid guidRootName = new Guid("{56F8EB44-B7E3-4564-B9A6-22E5E1B9110C}"); static void Main(string[] args) { String strServerAddress = args[0]; UInt16 usServerPort = UInt16.Parse(args[1]); Guid guidDomainId = Guid.Parse(args[2]); UInt32 ulStorageId = 0; // connect ThreadInit.InitializeThread(); Connection pConnection = Connection.Create(); if (0 > pConnection.Initialize(guidDomainId)) { Connection.Destroy(pConnection); ThreadInit.UninitializeThread(); return; } if (0 > pConnection.Connect(strServerAddress, usServerPort, null, null)) { pConnection.Uninitialize(); Connection.Destroy(pConnection); ThreadInit.UninitializeThread(); return; } if (0 > pConnection.QueryStorage(ulStorageId, false, null)) { pConnection.DisconnectAll(); pConnection.Uninitialize(); Connection.Destroy(pConnection); ThreadInit.UninitializeThread(); return; } // build domain WDomain pWDomain = WDomain.Create(); if (0 > pWDomain.Initialize(pConnection, 0)) { WDomain.Destroy(pWDomain); pConnection.ReleaseAllStorages(); pConnection.DisconnectAll(); pConnection.Uninitialize(); Connection.Destroy(pConnection); ThreadInit.UninitializeThread(); return; } // bind types PrepareDefinition.Bind(pWDomain); // create named object TestRoot pRootObject; TestRoot.Create(out pRootObject, pWDomain, DataFS.ObjectId.OBJECTID_NULL); pRootObject.SetRootName("first test root"); pRootObject.StoreData(Transaction.Store); pWDomain.InsertNamedLink(pRootObject.BuildLink(true), guidRootName, "first entry point", Transaction.Store); pWDomain.Execute(Transaction.Store, null); pRootObject.Dispose(); // unbind types PrepareDefinition.Unbind(); // destroy domain pWDomain.Uninitialize(); WDomain.Destroy(pWDomain); // disconnect pConnection.ReleaseAllStorages(); pConnection.DisconnectAll(); pConnection.Uninitialize(); Connection.Destroy(pConnection); ThreadInit.UninitializeThread(); } } }
readonly
"{56F8EB44-B7E3-4564-B9A6-22E5E1B9110C}"
UInt32
ObjectId
#import <DataDefinition.bdtd> object TestRoot { TestRoot { RootName [ get, set ]; AllObjects [ get, set ]; } }; object TestObject { TestObject { Text [ get, set ]; Number [ get, set ]; } };
#include "pch.h" #include <DataFS\Access\DataFS Access.h> using namespace DataFSAccess; #include "_data\AccessDefinition.h" // {56F8EB44-B7E3-4564-B9A6-22E5E1B9110C} const GUID guidRootName = { 0x56f8eb44, 0xb7e3, 0x4564, { 0xb9, 0xa6, 0x22, 0xe5, 0xe1, 0xb9, 0x11, 0xc } }; int _tmain(int argc, wchar_t* argv[]) { const wchar_t* strServerAddress = argv[1]; UINT16 usServerPort = (UINT16)_wtoi(argv[2]); GUID guidDomainId; ::CLSIDFromString(argv[3], &guidDomainId); UINT32 ulStorageId = 0; // connect InitializeThread(); Connection* pConnection = Connection_Create(); if(FAILED(pConnection->Initialize(&guidDomainId))) { Connection_Destroy(pConnection); UninitializeThread(); return -1; } if(FAILED(pConnection->Connect(strServerAddress, usServerPort, NULL))) { pConnection->Uninitialize(); Connection_Destroy(pConnection); UninitializeThread(); return -1; } if(FAILED(pConnection->QueryStorage(ulStorageId, false))) { pConnection->DisconnectAll(); pConnection->Uninitialize(); Connection_Destroy(pConnection); UninitializeThread(); return -1; } // build domain WDomain* pWDomain = Domain_Create(); if(FAILED(pWDomain->Initialize(pConnection, 0))) { Domain_Destroy(pWDomain); pConnection->ReleaseAllStorages(); pConnection->DisconnectAll(); pConnection->Uninitialize(); Connection_Destroy(pConnection); UninitializeThread(); return -1; } // bind types AccessDefinition::Bind(pWDomain); // open named object DataFS::ObjectId oiRootObject; pWDomain->QueryNamedLinkId(&guidRootName, 1, &oiRootObject, NULL); TestRoot* pRootObject; TestRoot::Open(&pRootObject, pWDomain, &oiRootObject); pRootObject->Load(); pWDomain->Execute(Transaction::Load, NULL); // open the list for writing TestObjectList* pList; pRootObject->SetAllObjects(&pList); // create an add a new object TestObject* pTestObject; TestObject::Create(&pTestObject, pRootObject->GetObject()); TestObjectListItem itm; itm.anObject = pTestObject->BuildLink(true); itm.theType = 12; pList->Insert(NULL, &itm); pTestObject->SetText(L"something"); pTestObject->SetNumber(343); pTestObject->Store(); pRootObject->Store(); pWDomain->Execute(Transaction::Store, NULL); pTestObject->Release(); pRootObject->Release(); // unbind types AccessDefinition::Unbind(); // destroy domain pWDomain->Uninitialize(); Domain_Destroy(pWDomain); // disconnect pConnection->ReleaseAllStorages(); pConnection->DisconnectAll(); pConnection->Uninitialize(); Connection_Destroy(pConnection); UninitializeThread(); return 0; }
"_data\AccessDefinition.h"
AccessDefinition
// open named object
// open the list for writing
// create an add a new object
TestObjectListItem
"something"
using System; using DataFSAccess; namespace SimpleObjectCs { class SimpleObject { static readonly Guid guidRootName = new Guid("{56F8EB44-B7E3-4564-B9A6-22E5E1B9110C}"); static void Main(string[] args) { String strServerAddress = args[0]; UInt16 usServerPort = UInt16.Parse(args[1]); Guid guidDomainId = Guid.Parse(args[2]); UInt32 ulStorageId = 0; // connect ThreadInit.InitializeThread(); Connection pConnection = Connection.Create(); if (0 > pConnection.Initialize(guidDomainId)) { Connection.Destroy(pConnection); ThreadInit.UninitializeThread(); return; } if (0 > pConnection.Connect(strServerAddress, usServerPort, null, null)) { pConnection.Uninitialize(); Connection.Destroy(pConnection); ThreadInit.UninitializeThread(); return; } if (0 > pConnection.QueryStorage(ulStorageId, false, null)) { pConnection.DisconnectAll(); pConnection.Uninitialize(); Connection.Destroy(pConnection); ThreadInit.UninitializeThread(); return; } // build domain WDomain pWDomain = WDomain.Create(); if (0 > pWDomain.Initialize(pConnection, 0)) { WDomain.Destroy(pWDomain); pConnection.ReleaseAllStorages(); pConnection.DisconnectAll(); pConnection.Uninitialize(); Connection.Destroy(pConnection); ThreadInit.UninitializeThread(); return; } // bind types AccessDefinition.Bind(pWDomain); // open named object DataFS.Array<DataFS.ObjectId> aoiRootObject = new DataFS.Array<DataFS.ObjectId>(); pWDomain.QueryNamedLinkId(new Guid[] { guidRootName }, aoiRootObject, null); TestRoot pRootObject; TestRoot.Open(out pRootObject, pWDomain, aoiRootObject.pData[0], 0, Transaction.Load); pRootObject.Load(_TestRoot.ALL_ATTRIBUTES, Transaction.Load); pWDomain.Execute(Transaction.Load, null); // open the list for writing TestObjectList pList; pRootObject.SetAllObjects(out pList); // create an add a new object TestObject pTestObject; TestObject.Create(out pTestObject, pRootObject.GetObject()); TestObjectListItem itm = new TestObjectListItem(); itm.anObject = pTestObject.BuildLink(true); itm.theType = 12; uint idx; pList.Insert(out idx, itm); pTestObject.SetText("something"); pTestObject.SetNumber(343); pTestObject.StoreData(Transaction.Store); pRootObject.StoreData(Transaction.Store); pWDomain.Execute(Transaction.Store, null); pTestObject.Dispose(); pRootObject.Dispose(); // unbind types AccessDefinition.Unbind(); // destroy domain pWDomain.Uninitialize(); WDomain.Destroy(pWDomain); // disconnect pConnection.ReleaseAllStorages(); pConnection.DisconnectAll(); pConnection.Uninitialize(); Connection.Destroy(pConnection); ThreadInit.UninitializeThread(); } } }
uint