~~Title: Efl.Net.Server_Tcp~~ ====== Efl.Net.Server_Tcp (class) ====== ===== Description ===== %%A TCP server.%% {{page>:develop:api-include:efl:net:server_tcp:description&nouser&nolink&nodate}} ===== Inheritance ===== => [[:develop:api:efl:net:server_ip|Efl.Net.Server_Ip]] //(class)// => [[:develop:api:efl:net:server_fd|Efl.Net.Server_Fd]] //(class)// => [[:develop:api:efl:loop_fd|Efl.Loop_Fd]] //(class)// => [[:develop:api:efl:loop_consumer|Efl.Loop_Consumer]] //(class)// => [[:develop:api:efl:object|Efl.Object]] //(class)// ++++ Full hierarchy | * [[:develop:api:efl:net:server_ip|Efl.Net.Server_Ip]] //(class)// * [[:develop:api:efl:net:server_fd|Efl.Net.Server_Fd]] //(class)// * [[:develop:api:efl:loop_fd|Efl.Loop_Fd]] //(class)// * [[:develop:api:efl:loop_consumer|Efl.Loop_Consumer]] //(class)// * [[:develop:api:efl:object|Efl.Object]] //(class)// * [[:develop:api:efl:net:server|Efl.Net.Server]] //(interface)// ++++ ===== Members ===== **[[:develop:api:efl:net:server_tcp:method:destructor|destructor]]**// [Overridden from [[:develop:api:efl:object|Efl.Object]]]//\\ > %%Implement this method to provide deinitialization code for your object if you need it.%% void efl_destructor(Eo *obj); \\ **[[:develop:api:efl:net:server_tcp:method:serve|serve]]**// [Overridden from [[:develop:api:efl:net:server|Efl.Net.Server]]]//\\ > %%Starts serving requests.%% Eina_Error efl_net_server_serve(Eo *obj, const char *address); \\ **[[:develop:api:efl:net:server_tcp:method:socket_activate|socket_activate]]**// [Overridden from [[:develop:api:efl:net:server_fd|Efl.Net.Server_Fd]]]//\\ > %%If this method is called, use an already activated socket.%% Eina_Error efl_net_server_fd_socket_activate(Eo *obj, const char *address); \\ **[[:develop:api:efl:net:server_tcp:method:client_add|client_add]]** ''protected''// [Overridden from [[:develop:api:efl:net:server_fd|Efl.Net.Server_Fd]]]//\\ > %%Accepts a new client, should emit "client,add".%% void efl_net_server_fd_client_add(Eo *obj, int client_fd); \\ **[[:develop:api:efl:net:server_tcp:method:client_reject|client_reject]]** ''protected''// [Overridden from [[:develop:api:efl:net:server_fd|Efl.Net.Server_Fd]]]//\\ > %%Rejects a new client, should emit "client,rejected".%% void efl_net_server_fd_client_reject(Eo *obj, int client_fd); \\ ==== Inherited ==== ^ [[:develop:api:efl:loop_consumer|Efl.Loop_Consumer]] ^^^ | | **[[:develop:api:efl:loop_consumer:method:future_rejected|future_rejected]]** | %%Creates a new future that is already rejected to a specified error using the %%[[:develop:api:efl:loop_consumer:property:loop|Efl.Loop_Consumer.loop.get]]%%.%% | | | **[[:develop:api:efl:loop_consumer:method:future_resolved|future_resolved]]** | %%Creates a new future that is already resolved to a value.%% | | | **[[:develop:api:efl:loop_consumer:property:loop|loop]]** //**(get)**// | | | | **[[:develop:api:efl:loop_consumer:method:promise_new|promise_new]]** | %%Create a new promise with the scheduler coming from the loop provided by this object.%% | ^ [[:develop:api:efl:loop_fd|Efl.Loop_Fd]] ^^^ | | **[[:develop:api:efl:loop_fd:property:fd_file|fd_file]]** //**(get, set)**// | %%Defines which file descriptor to watch when watching a file.%% | | | **[[:develop:api:efl:loop_fd:method:invalidate|invalidate]]** | %%Implement this method to perform special actions when your object loses its parent, if you need to.%% | | | **[[:develop:api:efl:loop_fd:property:parent|parent]]** //**(get, set)**// | %%The parent of an object.%% | ^ [[:develop:api:efl:net:server_fd|Efl.Net.Server_Fd]] ^^^ | ''protected set'' | **[[:develop:api:efl:net:server_fd:property:address|address]]** //**(get, set)**// | %%The address to which the server is bound.%% | | ''protected set'' | **[[:develop:api:efl:net:server_fd:property:clients_count|clients_count]]** //**(get, set)**// | %%Number of concurrent clients accepted by the server.%% | | | **[[:develop:api:efl:net:server_fd:property:clients_limit|clients_limit]]** //**(get, set)**// | %%Number of maximum concurrent clients allowed by the server.%% | | | **[[:develop:api:efl:net:server_fd:property:close_on_exec|close_on_exec]]** //**(get, set)**// | %%Controls Close-on-Exec() using FD_CLOEXEC.%% | | ''protected set'' | **[[:develop:api:efl:net:server_fd:property:family|family]]** //**(get, set)**// | %%The address family (AF_*) family of this socket.%% | | | **[[:develop:api:efl:net:server_fd:property:fd|fd]]** //**(get, set)**// | %%Defines which file descriptor to watch. If it is a file, use file_fd variant.%% | | | **[[:develop:api:efl:net:server_fd:method:finalize|finalize]]** | %%Implement this method to finish the initialization of your object after all (if any) user-provided configuration methods have been executed.%% | | | **[[:develop:api:efl:net:server_fd:property:reuse_address|reuse_address]]** //**(get, set)**// | %%Controls address reuse() using SO_REUSEADDR%% | | | **[[:develop:api:efl:net:server_fd:property:reuse_port|reuse_port]]** //**(get, set)**// | %%Controls port reuse() using SO_REUSEPORT (since linux 3.9)%% | | ''protected set'' | **[[:develop:api:efl:net:server_fd:property:serving|serving]]** //**(get, set)**// | %%Returns whenever the server is ready to accept clients or not.%% | | ''protected'' | **[[:develop:api:efl:net:server_fd:method:client_announce|client_announce]]** | %%Implementions should call this method to announce new clients.%% | | ''protected'' | **[[:develop:api:efl:net:server_fd:method:process_incoming_data|process_incoming_data]]** | %%When the socket has data to be read, process it.%% | ^ [[:develop:api:efl:net:server_ip|Efl.Net.Server_Ip]] ^^^ | | **[[:develop:api:efl:net:server_ip:method:constructor|constructor]]** | %%Implement this method to provide optional initialization code for your object.%% | | | **[[:develop:api:efl:net:server_ip:property:ipv6_only|ipv6_only]]** //**(get, set)**// | %%Whenever IPv6 listen address will accept only same-family clients or will allow IPv4 to connect as well.%% | ^ [[:develop:api:efl:object|Efl.Object]] ^^^ | | **[[:develop:api:efl:object:property:allow_parent_unref|allow_parent_unref]]** //**(get, set)**// | %%Allow an object to be deleted by unref even if it has a parent.%% | | | **[[:develop:api:efl:object:method:children_iterator_new|children_iterator_new]]** | %%Get an iterator on all children.%% | | | **[[:develop:api:efl:object:property:comment|comment]]** //**(get, set)**// | %%A human readable comment for the object.%% | | | **[[:develop:api:efl:object:method:composite_attach|composite_attach]]** | %%Make an object a composite object of another.%% | | | **[[:develop:api:efl:object:method:composite_detach|composite_detach]]** | %%Detach a composite object from another object.%% | | | **[[:develop:api:efl:object:method:composite_part_is|composite_part_is]]** | %%Check if an object is part of a composite object.%% | | | **[[:develop:api:efl:object:method:debug_name_override|debug_name_override]]** | %%Build a read-only name for this object used for debugging.%% | | | **[[:develop:api:efl:object:method:event_callback_forwarder_del|event_callback_forwarder_del]]** | %%Remove an event callback forwarder for a specified event and object.%% | | | **[[:develop:api:efl:object:method:event_callback_forwarder_priority_add|event_callback_forwarder_priority_add]]** | %%Add an event callback forwarder that will make this object emit an event whenever another object (%%''source''%%) emits it. The event is said to be forwarded from %%''source''%% to this object.%% | | | **[[:develop:api:efl:object:method:event_callback_stop|event_callback_stop]]** | %%Stop the current callback call.%% | | | **[[:develop:api:efl:object:method:event_freeze|event_freeze]]** | %%Freeze events of this object.%% | | | **[[:develop:api:efl:object:property:event_freeze_count|event_freeze_count]]** //**(get)**// | | | ''static'' | **[[:develop:api:efl:object:method:event_global_freeze|event_global_freeze]]** | %%Globally freeze events for ALL EFL OBJECTS.%% | | ''static'' | **[[:develop:api:efl:object:property:event_global_freeze_count|event_global_freeze_count]]** //**(get)**// | | | ''static'' | **[[:develop:api:efl:object:method:event_global_thaw|event_global_thaw]]** | %%Globally thaw events for ALL EFL OBJECTS.%% | | | **[[:develop:api:efl:object:method:event_thaw|event_thaw]]** | %%Thaw events of object.%% | | | **[[:develop:api:efl:object:property:finalized|finalized]]** //**(get)**// | | | | **[[:develop:api:efl:object:property:invalidated|invalidated]]** //**(get)**// | | | | **[[:develop:api:efl:object:property:invalidating|invalidating]]** //**(get)**// | | | | **[[:develop:api:efl:object:property:name|name]]** //**(get, set)**// | %%The name of the object.%% | | | **[[:develop:api:efl:object:method:name_find|name_find]]** | %%Find a child object with the given name and return it.%% | | | **[[:develop:api:efl:object:method:provider_find|provider_find]]** | %%Searches upwards in the object tree for a provider which knows the given class/interface.%% | | | **[[:develop:api:efl:object:method:provider_register|provider_register]]** | %%Will register a manager of a specific class to be answered by %%[[:develop:api:efl:object:method:provider_find|Efl.Object.provider_find]]%%.%% | | | **[[:develop:api:efl:object:method:provider_unregister|provider_unregister]]** | %%Will unregister a manager of a specific class that was previously registered and answered by %%[[:develop:api:efl:object:method:provider_find|Efl.Object.provider_find]]%%.%% | ===== Events ===== ==== Inherited ==== ^ [[:develop:api:efl:loop_fd|Efl.Loop_Fd]] ^^^ | | **[[:develop:api:efl:loop_fd:event:error|error]]** | %%Called when a error occurred on the file descriptor%% | | | **[[:develop:api:efl:loop_fd:event:read|read]]** | %%Called when a read happened on the file descriptor%% | | | **[[:develop:api:efl:loop_fd:event:write|write]]** | %%Called when a write happened on the file descriptor%% | ^ [[:develop:api:efl:net:server|Efl.Net.Server]] ^^^ | | **[[:develop:api:efl:net:server:event:client_add|client,add]]** | %%A new client socket has been created.%% | | | **[[:develop:api:efl:net:server:event:client_rejected|client,rejected]]** | %%Notifies a client was rejected due excess, see %%[[:develop:api:efl:net:server:property:clients_limit|Efl.Net.Server.clients_limit]]%%.%% | | | **[[:develop:api:efl:net:server:event:server_error|server,error]]** | %%An error has occurred and the server needs to be stopped.%% | | | **[[:develop:api:efl:net:server:event:serving|serving]]** | %%Notifies the server is ready to accept clients. See property %%[[:develop:api:efl:net:server:property:serving|Efl.Net.Server.serving]]%%%% | ^ [[:develop:api:efl:object|Efl.Object]] ^^^ | | **[[:develop:api:efl:object:event:del|del]]** | %%Object is being deleted. See %%[[:develop:api:efl:object:method:destructor|Efl.Object.destructor]]%%.%% | | | **[[:develop:api:efl:object:event:destruct|destruct]]** | %%Object has been fully destroyed. It can not be used beyond this point. This event should only serve to clean up any reference you keep to the object.%% | | | **[[:develop:api:efl:object:event:invalidate|invalidate]]** | %%Object is being invalidated and losing its parent. See %%[[:develop:api:efl:object:method:invalidate|Efl.Object.invalidate]]%%.%% | | | **[[:develop:api:efl:object:event:noref|noref]]** | %%Object has lost its last reference, only parent relationship is keeping it alive. Advanced usage.%% | | | **[[:develop:api:efl:object:event:ownership_shared|ownership,shared]]** | %%Object has acquired a second reference. It has multiple owners now. Triggered whenever increasing the refcount from one to two, it will not trigger by further increasing the refcount beyond two.%% | | | **[[:develop:api:efl:object:event:ownership_unique|ownership,unique]]** | %%Object has lost a reference and only one is left. It has just one owner now. Triggered whenever the refcount goes from two to one.%% |