Remove unnecessary left over.

This commit is contained in:
NagyZoltanPeter 2026-02-06 11:42:45 +01:00 committed by GitHub
parent 936e36ada1
commit 5e3405bae1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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.)