Skip to content

logo

Title: Eco.InterfaceBus1 Software Component Specification

USPD: US.ECO.00015-01 90
Component Name: Eco.InterfaceBus1
Short Description (max 300 char.): implements components registration in kernel, components discovery and calls marshaling
Component Use Category: MULTIPURPOSE
Component Type: KERNEL
CID: 00000000000000000000000042757331
Marketplace URL: https://ecoos.dev/product/7d71eccc-c82a-4181-bf15-045230ab7245
Status: Draft
Modified Date: November 8, 2021
Version: 1.0
Tags: KERNEL, INTERFACE BUS, COMMUNICATION, BUS

AuthorsCompany
Vladimir BashevPEERF

Table of Contents

1. Overview

1.1. Introduction

1.2. Notes

1.3. Links

2. Eco.InterfaceBus1 Component

3. IEcoInterfaceBus1 Interface

3.1. IEcoInterfaceBus1 IDL descriptor

3.1.1. Init function

3.1.2. InitWith function

3.1.3. RegisterComponent function

3.1.4. UnRegisterComponent function

3.1.5. QueryComponent function

4. IEcoInterfaceBus1NetExt Interface

4.1. IEcoInterfaceBus1NetExt IDL descriptor

4.1.1. set_Manager function

4.1.2. get_Manager function

4.1.3. QueryComponent function

5. IEcoInterfaceBus1MemExt Interface

5.1. IEcoInterfaceBus1MemExt IDL

5.1.1. set_Manager function

5.1.2. get_Manager function

5.1.3. set_ExpandPool function

6. IEcoInterfaceBus1FileExt Interface

6.1. IEcoInterfaceBus1FileExt IDL

6.1.1. set_Manager function

6.1.2. get_Manager function

6.1.3. set_SearchPath function

6.1.4. get_SearchPath function

6.1.5. RegisterComponent function

6.1.6. QueryComponent function

7. Error codes

Appendix A: Sample code and Training programs

1. Overview

This document describes the requirements for the implementation of the Eco.InterfaceBus1 component. (Component)

1.1. Introduction

Description.

1.2. Notes

  • Keywords

1.3. Links

This paragraph contains links to the component on marketplace and to other information useful to better understand this document:

Available in Marketplace at url: https://ecoos.dev/product/7d71eccc-c82a-4181-bf15-045230ab7245


2. Eco.InterfaceBus1 Component

The Eco.InterfaceBus1 component is a part of EcoOS microkernel and designated for other components registration in the OS kernel, components discovery and calls marshaling. Interface bus will provide components with System Interface pointer of a generation, corresponding to the generation of calling component.
The component has the following features: TBA

3. IEcoInterfaceBus1 Interface


3.1. IEcoInterfaceBus1 IDL descriptor

cpp
import "IEcoBase1.idl"  
  
[  
object,  
uguid(00000000-0000-0000-0000-A00000000101),  
]  
interface IEcoInterfaceBus1 : IEcoUnknown {  
  
int16_t	Init	([in] void);  
		  
int16_t	InitWith	([in] void* heapStartAddress, [in] uint32_t size);  
		  
int16_t	RegisterComponent	([in] const UGUID* rcid, [in] IecoUnknown* pIFactory);  
		  
int16_t	UnRegisterComponent	([in] const UGUID* rcid);  
		  
int16_t	QueryComponent	([in] const UGUID* rcid, [in] IEcoUnknown* pIUnkOuter [in] const UGUID* riid, [out] voidptr_t* ppv);  
		  
}

3.1.1. Init function

The function

3.1.2. InitWith function

The function

3.1.3. RegisterComponent function

The function

3.1.4. UnRegisterComponent function

The function

3.1.5. QueryComponent function

The function

4. IEcoInterfaceBus1NetExt Interface

4.1. IEcoInterfaceBus1NetExt IDL descriptor

cpp
import "IEcoBase1.idl"  
  
[  
object,  
uguid(00000000-0000-0000-0000-A00300000101),  
]  
interface IEcoInterfaceBus1NetExt : IEcoUnknown {  
  
int16_t	set_Manager	([in] const UGUID* rcid);  
  
const UGUID*	get_Manager	([in] void);  
		  
int16_t	QueryComponent	([in] char_t* networkname,  
 [in] const UGUID* rcid,  
 [in] IEcoUnknown* pIUnkOuter,  
 [in] const UGUID* riid,  
 [out] voidptr_t* ppv)  
  
}

4.1.1. set_Manager function

The function

4.1.2. get_Manager function

The function

4.1.3. QueryComponent function

The function

5. IEcoInterfaceBus1MemExt Interface

5.1. IEcoInterfaceBus1MemExt IDL

cpp
import "IEcoBase1.idl"  
  
[  
object,  
uguid(00000000-0000-0000-0000-A00100000101),  
]  
interface IEcoInterfaceBus1MemExt : IEcoUnknown {  
  
int16_t	set_Manager	([in] const UGUID* rcid);  
  
const UGUID*	get_Manager	([in] void);  
		  
int16_t	set_ExpandPool	([in] bool_t bExpandPool);  
		  
}

5.1.1. set_Manager function

The function

5.1.2. get_Manager function

The function

5.1.3. set_ExpandPool function

The function

6. IEcoInterfaceBus1FileExt Interface

6.1. IEcoInterfaceBus1FileExt IDL

cpp
import "IEcoBase1.idl"  
  
[  
object,  
uguid(00000000-0000-0000-0000-A00200000101),  
]  
interface IEcoInterfaceBus1FileExt : IEcoUnknown {  
  
int16_t	set_Manager	([in] const UGUID* rcid);  
  
const UGUID*	get_Manager	([in] void);  
		  
int16_t	set_SearchPath	([in] char_t* path);  
		  
char_t*	get_SearchPath	([in] void);  
		  
int16_t	RegisterComponent	([in] const UGUID* rcid,  
 [in] char_t* filename);  
		  
int16_t	QueryComponent	([in] char_t* filename,  
 [in] const UGUID* rcid,  
 [in] IEcoUnknown* pIUnkOuter,  
 [in] const UGUID* riid,  
 [out] voidptr_t* ppv)  
		  
}

6.1.1. set_Manager function

The function

6.1.2. get_Manager function

The function

6.1.3. set_SearchPath function

The function

6.1.4. get_SearchPath function

The function

6.1.5. RegisterComponent function

The function

6.1.6. QueryComponent function

The function

7. Error codes

The following table contains the error codes.

Error codeValueDescription
ERR_ECO_SUCCESES0x0000Operation successful.
ERR_ECO_UNEXPECTED0xFFFFUnexpected condition.
ERR_ECO_POINTER0xFFEENULL was passed incorrectly for a pointer value.
ERR_ECO_NOINTERFACE0xFFEDNo such interface supported.
ERR_ECO_COMPONENT_NOTFOUND0xFFE9The component was not found.

Appendix A: Sample code and Training programs