{"id":19663060,"url":"https://github.com/artfultom/vecenta","last_synced_at":"2026-05-15T10:08:54.490Z","repository":{"id":39616188,"uuid":"106540354","full_name":"artfultom/vecenta","owner":"artfultom","description":"RPC Framework","archived":false,"fork":false,"pushed_at":"2023-07-09T19:24:28.000Z","size":511,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2024-11-11T16:13:11.578Z","etag":null,"topics":["java","rpc","rpc-framework"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/artfultom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-10-11T10:34:04.000Z","updated_at":"2022-08-05T13:43:17.000Z","dependencies_parsed_at":"2022-07-13T10:30:39.741Z","dependency_job_id":null,"html_url":"https://github.com/artfultom/vecenta","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artfultom%2Fvecenta","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artfultom%2Fvecenta/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artfultom%2Fvecenta/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artfultom%2Fvecenta/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/artfultom","download_url":"https://codeload.github.com/artfultom/vecenta/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240972461,"owners_count":19886967,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","rpc","rpc-framework"],"created_at":"2024-11-11T16:13:14.299Z","updated_at":"2025-11-22T10:02:08.329Z","avatar_url":"https://github.com/artfultom.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vecenta\n\n## Installation\n\n```\nrepositories {\n    mavenCentral()\n}\n\ndependencies {\n    implementation 'io.github.artfultom:vecenta:0.0.7'\n}\n```\n\n## Json-schema\nAn example:\n```\n./TestServer.1.json\n```\nThe filename consists of **NAME_OF_SERVER.VERSION.json**. The generated server interface will have a name \"TestServer.java\". Then it must be implemented.\n\n```\n{\n  \"clients\": [\n    {\n      \"name\": \"TestClient\",\n      \"entities\": [\n        {\n          \"name\": \"math\",\n          \"methods\": [\n            {\n              \"name\": \"sum\",\n              \"in\": [\n                {\n                  \"name\": \"a\",\n                  \"type\": \"int32\"\n                },\n                {\n                  \"name\": \"b\",\n                  \"type\": \"int32\"\n                }\n              ],\n              \"out\": \"int32\"\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}\n```\n\"TestClient.java\" is a name of generated client class. Entity groups methods in the same package.\n\n## Code generation.\nYou should use [vecenta-gradle-plugin](https://github.com/artfultom/vecenta-gradle-plugin).\n\n```\nplugins {\n    id 'io.github.artfultom.vecenta.tools.vecenta-gradle-plugin' version '0.0.7'\n}\n```\n\n```\ngenerate {\n    clientPackage = \"test.client\"                   // a package for generated client classes\n    serverPackage = \"test.server\"                   // a package for generated server classes\n    exceptionPackage = \"test.exception\"             // a package for generated exception classes\n    modelPackage = \"test.model\"                     // a package for generated model classes\n    schemaDir = \"$projectDir/src/main/resources\"    // a directory with json-schema\n    targetDir = \"$projectDir/src/main/java/\"        // a directory for generated sources\n}\n```\n\n```\n./gradle generate\n```\n\nAfter a generation server interfaces must be implemented.\n\n## Launch the server.\n```\nServerMatcher matcher = new ServerMatcher();\nmatcher.register(\"test.server\");  // package with server classes\n\ntry (Server server = new TcpServer()) {\n  int port = 5550;\n  server.start(port, matcher);\n} catch (ConnectionException e) {\n  ...\n}\n```\n\n## Using of the client.\n```\ntry (Connector connector = new TcpConnector()) {\n  int port = 5550;\n  connector.connect(\"127.0.0.1\", port); // in this case ip is local\n  TestClient client = new TestClient(connector);\n\n  int result = client.sum(2, 3);  // method sum() will be executed on the server.\n  System.out.println(result);\n} catch (ConnectionException | ProtocolException | ConvertException e) {\n  ...\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartfultom%2Fvecenta","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fartfultom%2Fvecenta","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartfultom%2Fvecenta/lists"}