Using Object Model

Now you already know the basic ideas and it is time you immersed deeper into the Massiv object model. This part gives you a much more complete information than what you got in the overview. It should train you enough to be able, with some help of the Massiv Core Reference Guide, to start programming using the object model that encapsulates all the key features of the Massiv.

Table of Contents

4. Managed Objects
4.1. Introduction
4.2. Managed Data
4.2.1. Properties
4.2.2. Lightweight Serializable Types
4.3. Managed Object in Detail
4.3.1. Implementation
4.3.2. Instantiation and Finalization
4.3.3. Referencing
4.3.4. ValueTypes
4.3.5. Throwable Objects and Exceptions
4.3.6. Callbacks and Event Scheduling
4.3.7. Class Kinds
4.4. Object Identification
4.4.1. ObjectId Overview
4.4.2. ObjectId Pool
4.4.3. Mandatory And Optional Part
4.4.4. ObjectId Uniqueness
4.4.5. Object Searching
4.5. Managed Objects Defined By the Core
5. Pointers
5.1. Why Managed Pointers
5.2. Overview
5.2.1. Pointer characteristics
5.3. Using pointers
5.3.1. Declaring Pointers
5.3.2. Using Cast Object
5.3.3. Assigning To Pointers
5.3.4. Comparing Pointers
5.3.5. Dereferencing Pointers
5.3.6. Special Operations
5.3.7. Migration And Replication Groups
5.3.8. Pointers To Forward Declared Classes
5.3.9. Pointer Replicas, Pointers To Object Replicas
5.3.10. Pointer Policies
5.3.11. Exceptions
5.3.12. Differences From C++ Pointers
5.3.13. Differences In Debug And Release Mode
5.3.14. Advanced Techniques
5.4. Garbage Collector
5.4.1. The Model
5.4.2. GC Roots
5.4.3. The API
5.4.4. Running And Configuring GC
6. Migration
6.1. Overview
6.2. Communication Between Objects Using Migration
6.3. Migration Types
6.4. Migration Groups
6.5. Requesting Migration
6.6. Migration Callbacks
6.7. Preventing Migrations
6.8. Detecting Migrations Between Nodes
6.9. Migration And Garbage Collector
6.10. Migration And Nodes
6.10.1. Migration Between Server Nodes
6.10.2. Migration From Client To Server Nodes
6.10.3. Migration From Server To Client Nodes
6.11. How Migrations Are Used By The Core
6.11.1. Load Balancing
6.11.2. Synchronous And Asynchronous RPC
7. Replication
7.1. Overview
7.2. Replication Model
7.2.1. Simple Example
7.2.2. Replication from Client Nodes
7.2.3. Replication and Migration
7.2.4. Replication and Class Kinds
7.3. Requesting Replication
7.3.1. Using Methods of Object
7.3.2. Node Object Pointers
7.3.3. Requesting Replication by RPC
7.4. Accessing Object Replicas
7.5. Replication-related IDL Attributes
7.5.1. Node Types
7.5.2. Choosing Properties To Replicate
7.5.3. Replication and Migration Groups
7.5.4. Recommended Node Replication Masks
7.5.5. Custom Replication Flags and Masks
7.6. Replication and Migration Compared
7.7. Consistency of Replication Groups
7.8. Callbacks to Replicas
7.9. Replica Manager
7.10. Allowed and Illegal Operations
7.11. Massiv Demo Examples
7.12. Configuration and Statistics
8. Remote Procedure Call
8.1. Overview
8.2. RPC Model
8.3. Asynchronous RPC
8.3.1. Immediate Asynchronous RPC
8.3.2. Scheduling Asynchronous RPC
8.4. Synchronous RPC
8.4.1. Performing The Call
8.4.2. SRPC Exceptions
8.4.3. SRPC Security and Limitations
8.4.4. Advantages and Disadvantages of SRPC
8.5. Advanced Techniques
8.5.1. Triggering Replication by RPC
8.5.2. Synchronous RPC Optimizations
8.5.3. Asynchronous RPC to Replicas
8.5.4. Getting Reply to Asynchronous RPC
8.5.5. Dynamic RPC
8.6. Configuration and Statistics
8.7. Method Arguments and Results
8.7.1. Pointers
8.7.2. Managed Objects
8.8. RPC Reference Guide
9. Introduction to IDL
9.1. What Is IDL?
9.2. IDL in the Massiv
9.2.1. idl.list files
10. IDL Syntax
10.1. Basic Syntax Overview
10.2. Tokens
10.2.1. Comments
10.2.2. Identifiers
10.2.3. Keywords
10.2.4. Literals
10.3. Parser Directives
10.4. Massiv IDL Grammar
10.5. Name Lookup and Scoping
10.6. Namespaces
10.7. Enumerations
10.8. Attributes
10.8.1. Attribute Definition
10.8.2. Attribute Types
10.8.3. Attribute Default Values
10.8.4. Attribute Value Assignment
10.8.5. Expressions
10.8.6. Attribute Value Lookup
10.9. Classes
10.9.1. Forward Declaration
10.9.2. Class Definition
10.9.3. Class Attributes
10.9.4. Class Inheritance Specification
10.10. Properties
10.10.1. Property Attributes
10.11. Methods
10.11.1. Method Attributes
10.11.2. Method Arguments and Results
10.12. Special Directives
10.12.1. The include_header Directive
10.13. Property and Argument Types
10.13.1. Boolean
10.13.2. Integers With Fixed-length Serialization
10.13.3. Integers With Variable-length Serialization
10.13.4. Enumeration Type
10.13.5. Floating-Point
10.13.6. Floating-Point With Quantized Serialization
10.13.7. String
10.13.8. Time
10.13.9. Event Handle
10.13.10. Math Vectors
10.13.11. Orientation
10.13.12. Color
10.13.13. Pointers
10.13.14. Managed Class Type
10.13.15. Pair
10.13.16. Array
10.13.17. Set
10.13.18. Dictionary
11. Classes Generated From the IDL
11.1. RPC Related Classes Generated
11.1.1. RPCStubs Objects
12. Metaobjects
12.1. Overview
12.2. MetaObject class
12.2.1. Obtaining a MetaObject
12.2.2. Passing Pointers to MetaObject Methods
12.2.3. Class Information
12.2.4. Properties
12.2.5. Methods
12.2.6. Massiv Core and Demo Examples
12.3. ObjectFactory Class
13. Creating Managed Class
13.1. Overview
13.2. Creating a Library
13.3. Adding New IDLs to a Library
13.4. Interface Class
13.4.1. IDL Description of HelloInterface
13.4.2. C++ Definition of HelloInterface
13.5. Implementation Class
13.5.1. IDL description of Hello
13.5.2. C++ implementation of Hello
13.6. Linking With the Massiv Demo
14. Special Objects
14.1. Overview
14.2. Node Object
14.2.1. Functionality Of Server Node Objects
14.2.2. Functionality Of Client Node Objects
14.3. Account Object
14.3.1. Account Objects in Massiv Demo