{"id":19969854,"url":"https://github.com/naupio/pitcp","last_synced_at":"2025-05-04T01:30:38.795Z","repository":{"id":108483144,"uuid":"136624267","full_name":"Naupio/pitcp","owner":"Naupio","description":"Just a researching project for Erlang/OTP, don't used. **pitcp** is a Erlang socket acceptor pool for TCP protocols. ","archived":false,"fork":false,"pushed_at":"2021-12-22T07:11:58.000Z","size":27,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-08T00:41:35.392Z","etag":null,"topics":["erlang","erlang-tcp","tcp","tcp-pool","tcp-server"],"latest_commit_sha":null,"homepage":"","language":"Erlang","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Naupio.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-06-08T13:43:25.000Z","updated_at":"2021-12-22T07:12:41.000Z","dependencies_parsed_at":"2023-04-26T03:17:25.721Z","dependency_job_id":null,"html_url":"https://github.com/Naupio/pitcp","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Naupio%2Fpitcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Naupio%2Fpitcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Naupio%2Fpitcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Naupio%2Fpitcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Naupio","download_url":"https://codeload.github.com/Naupio/pitcp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252276955,"owners_count":21722447,"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":["erlang","erlang-tcp","tcp","tcp-pool","tcp-server"],"created_at":"2024-11-13T02:51:52.367Z","updated_at":"2025-05-04T01:30:38.786Z","avatar_url":"https://github.com/Naupio.png","language":"Erlang","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pitcp\n------\n\nJust a researching project for Erlang/OTP, don't used.\n\n# LICENSE\n- The [MIT License](./LICENSE)  \n- Copyright (c) 2018~2019 [Naupio Z.Y Huang](https://github.com/Naupio) \n\n# Pre Install\n-----\n    You must install erlang/otp \u003e= 21.0 and install **rebar3** build tool  \n\n# Build\n-----\n\n    $ rebar3 compile\n\n# Example code\n\n\n```erlang\n-module(pitcp_test).\n\n-author(\"Naupio Z.Y. Huang\").\n\n-behaviour(gen_server).\n-behaviour(pitcp_protocol).\n\n-define(SERVER, ?MODULE).\n\n%% gen_server callback function\n-export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]).\n\n%% pitcp_protocol callback function\n-export([start_tcp/4]).\n\n%% api\n-export([tcp_send/2]).\n\n%% test function\n-export([run_listener/0,spawn_conn/1]).\n\nrun_listener() -\u003e\n    Ref = pitcp_test_ref,\n    LisOpt = [binary,{port,18080},{packet,0},{active,false},{ip,{127,0,0,1}}],\n    ProMod = pitcp_test,\n    ProModOpt = [],\n    OtherOpt = [],\n    pitcp:start_listener(Ref, LisOpt, ProMod, ProModOpt, OtherOpt).\n\nspawn_conn(TestNum) when is_number(TestNum) andalso (TestNum \u003e 0) -\u003e\n    lists:foreach( fun(MsgNum) -\u003e\n        spawn(fun() -\u003e\n            {ok,Socket} = pitcp_util:connect({127,0,0,1},18080,[{active,false}]),\n            pitcp_util:send(Socket,\u003c\u003cMsgNum\u003e\u003e),\n            error_logger:info_msg(\"~n send: ~w ~n\",[MsgNum])\n        end)\n    end,\n    lists:seq(1,TestNum))\n    .\n\n%% main code\n\nstart_tcp(Ref, ClientSocket, ProModOpt, OtherOpt) -\u003e\n    start_link(Ref, ClientSocket, ProModOpt, OtherOpt).\n\nstart_link(Ref, ClientSocket, ProModOpt, OtherOpt) -\u003e\n    gen_server:start_link(?MODULE, [Ref, ClientSocket, ProModOpt, OtherOpt], []).\n\ninit([Ref, ClientSocket, ProModOpt, OtherOpt]) -\u003e\n    self() ! init,\n    pitcp_util:setopts(ClientSocket,[{active, once}]),\n    State = #{client_socket =\u003e ClientSocket\n            , ref =\u003e Ref\n            , pro_mod_opt =\u003e ProModOpt\n            , other_opt =\u003e OtherOpt\n            },\n    {ok, State}.\n\nhandle_call(get_client_socket, _From, #{client_socket := ClientSocket}=State) -\u003e\n    {reply,ClientSocket,State};\n\nhandle_call(_Msg, _From, _State) -\u003e\n    {reply, _Msg, _State}.\n\n\nhandle_cast({send,Data}, #{client_socket := ClientSocket}=State) -\u003e\n    pitcp_util:send(ClientSocket,Data),\n    {noreply, State};\n\nhandle_cast(_Msg, _State) -\u003e\n    {noreply, _State}.\n    \nhandle_info(init, _State) -\u003e\n    {noreply, _State};\n\nhandle_info({tcp,ClientSocket,Data}, #{client_socket := ClientSocket}=State) -\u003e\n    pitcp_util:setopts(ClientSocket,[{active, once}]),\n    ReplyData = handle_tcp_data(Data),\n    tcp_send(self(),ReplyData),\n    {noreply, State};\n\nhandle_info(_Msg, _State) -\u003e\n    {noreply, _State}.\n\nterminate(_Reson, _State) -\u003e\n    ok.\n\ncode_change(_OldVsn, _State, _Extra) -\u003e\n    ok.\n\nhandle_tcp_data(Data) -\u003e\n    error_logger:info_msg(\"~n receive: ~w ~n\",[Data]),\n    Data.\n\ntcp_send(ClientPID,Data) -\u003e\n    gen_server:cast(ClientPID,{send,Data}).\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaupio%2Fpitcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnaupio%2Fpitcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaupio%2Fpitcp/lists"}