/**
* Creates a new object reference.
*
- * @param orb FORB pseudo object this object reference is handled
- * by. This can be NULL only when forb_orb reference is created in
+ * @param orb FORB object this object reference is handled by. This
+ * can be NULL only when local forb_orb reference is created in
* forb_init().
*
* @param server_id Server ID of the remote FORB, where this object is
forb_ref_init(&obj->ref);
obj->orb = orb ? orb : obj;
if (server_id) {
- /* remote object or forb_orb */
+ /* remote object */
obj->server = *server_id;
obj->objkey = key;
} else {
/* local object */
if (orb) {
+ /* Normal local object */
forb_t *forb = forb_object_to_forb(obj);
obj->server = forb->server_id;
fosa_mutex_lock(&forb->objkey_mutex);
obj->objkey = ++forb->objkey;
+ /* We do not use object references for tree pointers. */
forb_objects_nolock_insert(forb, obj);
fosa_mutex_unlock(&forb->objkey_mutex);
} else {
- /* Error - local objects must have orb */
- forb_object_release(obj);
- obj = NULL;
+ /* forb_orb object. The forb_init()
+ * function must assign server field
+ * and put the object into the
+ * forb->objects */
+ obj->objkey = 0;
}
}
}