1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | -module(myserver). -behaviour(gen_server). -define(SERVER, ?MODULE). %% ------------------------------------------------------------------ %% API Function Exports %% ------------------------------------------------------------------ -export([start_link/1, info/0, release/0]). %% ------------------------------------------------------------------ %% gen_server Function Exports %% ------------------------------------------------------------------ -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]). %% ------------------------------------------------------------------ %% API Function Definitions %% ------------------------------------------------------------------ start_link(Path) -> gen_server:start_link({local, ?SERVER}, ?MODULE, [Path], []). info() -> gen_server:call(?MODULE, info). release() -> gen_server:call(?MODULE, release). %% ------------------------------------------------------------------ %% gen_server Function Definitions %% ------------------------------------------------------------------ init([Path]) -> R = {ok, _Bin} = file:read_file(Path), R. handle_call(info, _From, State) -> {reply, process_info(self(), binary), State}; handle_call(release, _From, _State) -> {reply, ok, nothing}. handle_cast(_Msg, State) -> {noreply, State}. handle_info(_Info, State) -> {noreply, State}. terminate(_Reason, _State) -> ok. code_change(_OldVsn, State, _Extra) -> {ok, State}. %% ------------------------------------------------------------------ %% Internal Function Definitions %% ------------------------------------------------------------------ |
LW1vZHVsZShteXNlcnZlcikuCi1iZWhhdmlvdXIoZ2VuX3NlcnZlcikuCi1kZWZpbmUoU0VSVkVSLCA/TU9EVUxFKS4KCiUlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQolJSBBUEkgRnVuY3Rpb24gRXhwb3J0cwolJSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi1leHBvcnQoW3N0YXJ0X2xpbmsvMSwgaW5mby8wLCByZWxlYXNlLzBdKS4KCiUlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQolJSBnZW5fc2VydmVyIEZ1bmN0aW9uIEV4cG9ydHMKJSUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgotZXhwb3J0KFtpbml0LzEsIGhhbmRsZV9jYWxsLzMsIGhhbmRsZV9jYXN0LzIsIGhhbmRsZV9pbmZvLzIsIHRlcm1pbmF0ZS8yLCBjb2RlX2NoYW5nZS8zXSkuCgolJSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJSUgQVBJIEZ1bmN0aW9uIERlZmluaXRpb25zCiUlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKc3RhcnRfbGluayhQYXRoKSAtPgogIGdlbl9zZXJ2ZXI6c3RhcnRfbGluayh7bG9jYWwsID9TRVJWRVJ9LCA/TU9EVUxFLCBbUGF0aF0sIFtdKS4KCmluZm8oKSAtPiBnZW5fc2VydmVyOmNhbGwoP01PRFVMRSwgaW5mbykuCnJlbGVhc2UoKSAtPiBnZW5fc2VydmVyOmNhbGwoP01PRFVMRSwgcmVsZWFzZSkuCgolJSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJSUgZ2VuX3NlcnZlciBGdW5jdGlvbiBEZWZpbml0aW9ucwolJSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmluaXQoW1BhdGhdKSAtPgogIFIgPSB7b2ssIF9CaW59ID0gZmlsZTpyZWFkX2ZpbGUoUGF0aCksIFIuCgpoYW5kbGVfY2FsbChpbmZvLCBfRnJvbSwgU3RhdGUpIC0+CiAge3JlcGx5LCBwcm9jZXNzX2luZm8oc2VsZigpLCBiaW5hcnkpLCBTdGF0ZX07CmhhbmRsZV9jYWxsKHJlbGVhc2UsIF9Gcm9tLCBfU3RhdGUpIC0+CiAge3JlcGx5LCBvaywgbm90aGluZ30uCgpoYW5kbGVfY2FzdChfTXNnLCBTdGF0ZSkgLT4KICB7bm9yZXBseSwgU3RhdGV9LgoKaGFuZGxlX2luZm8oX0luZm8sIFN0YXRlKSAtPgogIHtub3JlcGx5LCBTdGF0ZX0uCgp0ZXJtaW5hdGUoX1JlYXNvbiwgX1N0YXRlKSAtPgogIG9rLgoKY29kZV9jaGFuZ2UoX09sZFZzbiwgU3RhdGUsIF9FeHRyYSkgLT4KICB7b2ssIFN0YXRlfS4KCiUlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQolJSBJbnRlcm5hbCBGdW5jdGlvbiBEZWZpbml0aW9ucwolJSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCg==


