mirror of
https://github.com/logos-messaging/logos-delivery.git
synced 2026-03-03 07:33:14 +00:00
Remove unnecessary left over.
This commit is contained in:
parent
936e36ada1
commit
5e3405bae1
@ -1,155 +0,0 @@
|
||||
# liblmapi - Summary
|
||||
|
||||
## Overview
|
||||
|
||||
Created a new C FFI library `liblmapi` (Logos Messaging API) that provides a simplified interface to the high-level API functions from `waku/api/api.nim`.
|
||||
|
||||
## Files Created
|
||||
|
||||
### Core Library Files
|
||||
|
||||
1. **liblmapi/liblmapi.h** - C header file
|
||||
- Defines C FFI interface
|
||||
- Includes function declarations for node lifecycle and messaging
|
||||
- Return codes and callback typedef
|
||||
|
||||
2. **liblmapi/liblmapi.nim** - Main library entry point
|
||||
- Imports and includes API modules
|
||||
- Exports `lmapi_destroy` function
|
||||
- Follows same pattern as `library/libwaku.nim`
|
||||
|
||||
3. **liblmapi/declare_lib.nim** - Library declaration
|
||||
- Uses `declareLibrary("lmapi")` macro
|
||||
- Exports `lmapi_set_event_callback` function
|
||||
|
||||
4. **liblmapi/nim.cfg** - Nim configuration
|
||||
- Sets up compiler flags (gc:refc, threads:on)
|
||||
- Configures paths for nim-ffi and project root
|
||||
- Library-specific build settings
|
||||
|
||||
### API Implementation Files
|
||||
|
||||
5. **liblmapi/lmapi/node_api.nim** - Node lifecycle API
|
||||
- `lmapi_create_node` - Creates node from JSON config
|
||||
- `lmapi_start_node` - Starts the node
|
||||
- `lmapi_stop_node` - Stops the node
|
||||
- Uses `registerReqFFI` macro for CreateNodeRequest
|
||||
|
||||
6. **liblmapi/lmapi/messaging_api.nim** - Messaging API
|
||||
- `lmapi_subscribe` - Subscribe to content topic
|
||||
- `lmapi_unsubscribe` - Unsubscribe from content topic
|
||||
- `lmapi_send` - Send message with base64-encoded payload
|
||||
- All use `{.ffi.}` pragma for automatic FFI wrapping
|
||||
|
||||
### Documentation and Examples
|
||||
|
||||
7. **liblmapi/README.md** - Main documentation
|
||||
- API function reference
|
||||
- Configuration examples
|
||||
- Build instructions
|
||||
- Usage patterns
|
||||
- Architecture overview
|
||||
|
||||
8. **liblmapi/examples/liblmapi_example.c** - C example program
|
||||
- Demonstrates all API functions
|
||||
- Shows proper callback handling
|
||||
- Complete lifecycle example
|
||||
|
||||
9. **liblmapi/examples/README.md** - Example documentation
|
||||
- Build instructions per platform
|
||||
- Expected output
|
||||
- Usage notes
|
||||
|
||||
### Build System Integration
|
||||
|
||||
10. **Modified waku.nims**
|
||||
- Added `liblmapiStatic` task
|
||||
- Added `liblmapiDynamic` task
|
||||
- Both use `buildLibrary` helper with chronicle params
|
||||
|
||||
11. **Modified Makefile**
|
||||
- Added `liblmapi` to PHONY targets
|
||||
- Added `LMAPI_BUILD_COMMAND` variable
|
||||
- Added `liblmapi` target that calls nim tasks
|
||||
- Respects STATIC flag for static/dynamic build
|
||||
|
||||
## API Functions
|
||||
|
||||
### Node Lifecycle
|
||||
- `lmapi_create_node` - Create and configure node
|
||||
- `lmapi_start_node` - Start node operations
|
||||
- `lmapi_stop_node` - Stop node operations
|
||||
- `lmapi_destroy` - Clean up and free resources
|
||||
|
||||
### Messaging
|
||||
- `lmapi_subscribe` - Subscribe to content topic
|
||||
- `lmapi_unsubscribe` - Unsubscribe from content topic
|
||||
- `lmapi_send` - Send message envelope
|
||||
|
||||
### Events
|
||||
- `lmapi_set_event_callback` - Register event callback
|
||||
|
||||
## Build Commands
|
||||
|
||||
```bash
|
||||
# Build dynamic library (default)
|
||||
make liblmapi
|
||||
|
||||
# Build static library
|
||||
make liblmapi STATIC=1
|
||||
|
||||
# Or directly via nim
|
||||
nim liblmapiDynamic waku.nims liblmapi.so
|
||||
nim liblmapiStatic waku.nims liblmapi.a
|
||||
```
|
||||
|
||||
## Key Design Decisions
|
||||
|
||||
1. **Follows libwaku pattern**: Same structure and conventions as existing `library/libwaku.nim`
|
||||
|
||||
2. **Uses nim-ffi framework**: Leverages vendor/nim-ffi for:
|
||||
- Thread-safe request processing
|
||||
- Async operation management
|
||||
- Callback marshaling
|
||||
- Memory management between C and Nim
|
||||
|
||||
3. **Wraps new high-level API**: Directly wraps `waku/api/api.nim` functions:
|
||||
- `createNode(config: NodeConfig)`
|
||||
- `subscribe(w: Waku, contentTopic: ContentTopic)`
|
||||
- `send(w: Waku, envelope: MessageEnvelope)`
|
||||
|
||||
4. **JSON-based configuration**: Uses JSON for:
|
||||
- Node configuration (mode, networking, protocols)
|
||||
- Message envelopes (contentTopic, payload, ephemeral)
|
||||
- Simplifies C interface while maintaining flexibility
|
||||
|
||||
5. **Base64 payload encoding**: Message payloads must be base64-encoded in JSON
|
||||
- Avoids binary data issues in JSON
|
||||
- Standard encoding for C interop
|
||||
|
||||
## Integration Points
|
||||
|
||||
The library integrates with:
|
||||
|
||||
- `waku/api/api.nim` - Main API functions
|
||||
- `waku/api/api_conf.nim` - Configuration types (NodeConfig, NetworkingConfig, etc.)
|
||||
- `waku/api/types.nim` - Core types (MessageEnvelope, RequestId, etc.)
|
||||
- `waku/factory/waku.nim` - Waku instance type
|
||||
- `vendor/nim-ffi/` - FFI infrastructure
|
||||
|
||||
## Testing
|
||||
|
||||
To test the library:
|
||||
|
||||
1. Build it: `make liblmapi`
|
||||
2. Build the example: `make liblmapi_example` or `cd liblmapi/examples && gcc -o liblmapi_example liblmapi_example.c -I.. -L../../build -llmapi`
|
||||
3. Run: `./build/liblmapi_example`
|
||||
|
||||
## Next Steps
|
||||
|
||||
Potential enhancements:
|
||||
- Add more examples (async, multi-threaded, etc.)
|
||||
- Add proper test suite
|
||||
- Add CI/CD integration
|
||||
- Add mobile platform support (Android/iOS)
|
||||
- Add language bindings (Python, Go, etc.)
|
||||
Loading…
x
Reference in New Issue
Block a user