Documentation ¶
Overview ¶
Package cache implements a cache of all the resources that are relevant to the gateway
Package cache is a generated GoMock package.
Package cache is a generated GoMock package.
Package cache contains the cache for the gateway
Index ¶
- type AccessControlPoliciesTrigger
- type Cache
- type CircuitBreakingPoliciesTrigger
- type EndpointSlicesTrigger
- type EndpointsTrigger
- type FaultInjectionPoliciesTrigger
- type GRPCRoutesTrigger
- type GatewayAPIResource
- type GatewayCache
- type GatewayClassesTrigger
- type GatewayTLSPoliciesTrigger
- type GatewaysTrigger
- type HTTPRoutesTrigger
- type HealthCheckPoliciesTrigger
- type LoadBalancerPoliciesTrigger
- type MockCache
- type MockCacheMockRecorder
- type MockTrigger
- type MockTriggerMockRecorder
- type RateLimitPoliciesTrigger
- type ResourceType
- type RetryPoliciesTrigger
- type SecretTrigger
- type ServiceImportsTrigger
- type ServicesTrigger
- type SessionStickyPoliciesTrigger
- type TCPRoutesTrigger
- type TLSRoutesTrigger
- type Trigger
- type UDPRoutesTrigger
- type UpstreamTLSPoliciesTrigger
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AccessControlPoliciesTrigger ¶ added in v1.2.0
type AccessControlPoliciesTrigger struct{}
AccessControlPoliciesTrigger is responsible for processing AccessControlPolicy objects
func (*AccessControlPoliciesTrigger) Delete ¶ added in v1.2.0
func (p *AccessControlPoliciesTrigger) Delete(obj interface{}, cache *GatewayCache) bool
Delete removes a AccessControlPolicy from the cache and returns true if the policy was found
func (*AccessControlPoliciesTrigger) Insert ¶ added in v1.2.0
func (p *AccessControlPoliciesTrigger) Insert(obj interface{}, cache *GatewayCache) bool
Insert adds a AccessControlPolicy to the cache and returns true if the target service is routable
type CircuitBreakingPoliciesTrigger ¶ added in v1.2.0
type CircuitBreakingPoliciesTrigger struct{}
CircuitBreakingPoliciesTrigger is responsible for processing CircuitBreakingPolicy objects
func (*CircuitBreakingPoliciesTrigger) Delete ¶ added in v1.2.0
func (p *CircuitBreakingPoliciesTrigger) Delete(obj interface{}, cache *GatewayCache) bool
Delete removes a CircuitBreakingPolicy from the cache and returns true if the policy was found
func (*CircuitBreakingPoliciesTrigger) Insert ¶ added in v1.2.0
func (p *CircuitBreakingPoliciesTrigger) Insert(obj interface{}, cache *GatewayCache) bool
Insert adds a CircuitBreakingPolicy to the cache and returns true if the target service is routable
type EndpointSlicesTrigger ¶ added in v1.2.0
type EndpointSlicesTrigger struct{}
EndpointSlicesTrigger is responsible for processing EndpointSlices
func (*EndpointSlicesTrigger) Delete ¶ added in v1.2.0
func (p *EndpointSlicesTrigger) Delete(obj interface{}, cache *GatewayCache) bool
Delete removes the EndpointSlice object from the cache and returns true if the cache was modified
func (*EndpointSlicesTrigger) Insert ¶ added in v1.2.0
func (p *EndpointSlicesTrigger) Insert(obj interface{}, cache *GatewayCache) bool
Insert adds the EndpointSlice object to the cache and returns true if the cache was modified
type EndpointsTrigger ¶ added in v1.2.0
type EndpointsTrigger struct{}
EndpointsTrigger is responsible for processing Endpoints objects
func (*EndpointsTrigger) Delete ¶ added in v1.2.0
func (p *EndpointsTrigger) Delete(obj interface{}, cache *GatewayCache) bool
Delete removes the Endpoints object from the cache and returns true if the cache was modified
func (*EndpointsTrigger) Insert ¶ added in v1.2.0
func (p *EndpointsTrigger) Insert(obj interface{}, cache *GatewayCache) bool
Insert adds the Endpoints object to the cache and returns true if the cache was modified
type FaultInjectionPoliciesTrigger ¶ added in v1.2.0
type FaultInjectionPoliciesTrigger struct{}
FaultInjectionPoliciesTrigger is responsible for processing FaultInjectionPolicy objects
func (*FaultInjectionPoliciesTrigger) Delete ¶ added in v1.2.0
func (p *FaultInjectionPoliciesTrigger) Delete(obj interface{}, cache *GatewayCache) bool
Delete removes a FaultInjectionPolicy from the cache and returns true if the policy was found
func (*FaultInjectionPoliciesTrigger) Insert ¶ added in v1.2.0
func (p *FaultInjectionPoliciesTrigger) Insert(obj interface{}, cache *GatewayCache) bool
Insert adds a FaultInjectionPolicy to the cache and returns true if the target service is routable
type GRPCRoutesTrigger ¶ added in v1.2.0
type GRPCRoutesTrigger struct{}
GRPCRoutesTrigger is responsible for processing GRPCRoute objects
func (*GRPCRoutesTrigger) Delete ¶ added in v1.2.0
func (p *GRPCRoutesTrigger) Delete(obj interface{}, cache *GatewayCache) bool
Delete removes a GRPCRoute from the cache and returns true if the route was found
func (*GRPCRoutesTrigger) Insert ¶ added in v1.2.0
func (p *GRPCRoutesTrigger) Insert(obj interface{}, cache *GatewayCache) bool
Insert adds a GRPCRoute to the cache and returns true if the route is effective
type GatewayAPIResource ¶ added in v1.2.0
type GatewayAPIResource interface { *gwv1.HTTPRoute | *gwv1alpha2.GRPCRoute | *gwv1alpha2.TLSRoute | *gwv1alpha2.TCPRoute | *gwv1alpha2.UDPRoute | *gwpav1alpha1.RateLimitPolicy | *gwpav1alpha1.SessionStickyPolicy | *gwpav1alpha1.LoadBalancerPolicy | *gwpav1alpha1.CircuitBreakingPolicy | *gwpav1alpha1.AccessControlPolicy | *gwpav1alpha1.HealthCheckPolicy | *gwpav1alpha1.FaultInjectionPolicy | *gwpav1alpha1.UpstreamTLSPolicy | *gwpav1alpha1.RetryPolicy | *gwpav1alpha1.GatewayTLSPolicy }
type GatewayCache ¶
type GatewayCache struct {
// contains filtered or unexported fields
}
GatewayCache is a cache of all the resources that are relevant to the gateway
func NewGatewayCache ¶
func NewGatewayCache(informerCollection *informers.InformerCollection, kubeClient kubernetes.Interface, cfg configurator.Configurator) *GatewayCache
NewGatewayCache creates a new gateway cache
func (*GatewayCache) BuildConfigs ¶
func (c *GatewayCache) BuildConfigs()
BuildConfigs builds the configs for all the gateways in the cache
func (*GatewayCache) Delete ¶
func (c *GatewayCache) Delete(obj interface{}) bool
Delete deletes an object from the cache
func (*GatewayCache) Insert ¶
func (c *GatewayCache) Insert(obj interface{}) bool
Insert inserts an object into the cache
type GatewayClassesTrigger ¶ added in v1.2.0
type GatewayClassesTrigger struct{}
GatewayClassesTrigger is responsible for processing GatewayClass objects
func (*GatewayClassesTrigger) Delete ¶ added in v1.2.0
func (p *GatewayClassesTrigger) Delete(obj interface{}, cache *GatewayCache) bool
Delete removes the GatewayClass object from the cache and returns true if the cache was modified
func (*GatewayClassesTrigger) Insert ¶ added in v1.2.0
func (p *GatewayClassesTrigger) Insert(obj interface{}, cache *GatewayCache) bool
Insert adds the GatewayClass object to the cache and returns true if the cache was modified
type GatewayTLSPoliciesTrigger ¶ added in v1.2.0
type GatewayTLSPoliciesTrigger struct{}
GatewayTLSPoliciesTrigger is responsible for processing GatewayTLSPolicy objects
func (*GatewayTLSPoliciesTrigger) Delete ¶ added in v1.2.0
func (p *GatewayTLSPoliciesTrigger) Delete(obj interface{}, cache *GatewayCache) bool
Delete removes a GatewayTLSPolicy from the cache and returns true if the policy was found
func (*GatewayTLSPoliciesTrigger) Insert ¶ added in v1.2.0
func (p *GatewayTLSPoliciesTrigger) Insert(obj interface{}, cache *GatewayCache) bool
Insert adds a GatewayTLSPolicy to the cache and returns true if the target service is routable
type GatewaysTrigger ¶ added in v1.2.0
type GatewaysTrigger struct{}
GatewaysTrigger is responsible for processing Gateway objects
func (*GatewaysTrigger) Delete ¶ added in v1.2.0
func (p *GatewaysTrigger) Delete(_ interface{}, _ *GatewayCache) bool
Delete removes the Gateway object from the cache and returns true if the cache was modified
func (*GatewaysTrigger) Insert ¶ added in v1.2.0
func (p *GatewaysTrigger) Insert(obj interface{}, cache *GatewayCache) bool
Insert adds the Gateway object to the cache and returns true if the cache was modified
type HTTPRoutesTrigger ¶ added in v1.2.0
type HTTPRoutesTrigger struct{}
HTTPRoutesTrigger is responsible for processing HTTPRoute objects
func (*HTTPRoutesTrigger) Delete ¶ added in v1.2.0
func (p *HTTPRoutesTrigger) Delete(obj interface{}, cache *GatewayCache) bool
Delete removes a HTTPRoute from the cache and returns true if the route was found
func (*HTTPRoutesTrigger) Insert ¶ added in v1.2.0
func (p *HTTPRoutesTrigger) Insert(obj interface{}, cache *GatewayCache) bool
Insert adds a HTTPRoute to the cache and returns true if the route is effective
type HealthCheckPoliciesTrigger ¶ added in v1.2.0
type HealthCheckPoliciesTrigger struct{}
HealthCheckPoliciesTrigger is responsible for processing HealthCheckPolicy objects
func (*HealthCheckPoliciesTrigger) Delete ¶ added in v1.2.0
func (p *HealthCheckPoliciesTrigger) Delete(obj interface{}, cache *GatewayCache) bool
Delete removes a HealthCheckPolicy from the cache and returns true if the policy was found
func (*HealthCheckPoliciesTrigger) Insert ¶ added in v1.2.0
func (p *HealthCheckPoliciesTrigger) Insert(obj interface{}, cache *GatewayCache) bool
Insert adds a HealthCheckPolicy to the cache and returns true if the target service is routable
type LoadBalancerPoliciesTrigger ¶ added in v1.2.0
type LoadBalancerPoliciesTrigger struct{}
LoadBalancerPoliciesTrigger is responsible for processing LoadBalancerPolicy objects
func (*LoadBalancerPoliciesTrigger) Delete ¶ added in v1.2.0
func (p *LoadBalancerPoliciesTrigger) Delete(obj interface{}, cache *GatewayCache) bool
Delete removes a LoadBalancerPolicy from the cache and returns true if the policy was found
func (*LoadBalancerPoliciesTrigger) Insert ¶ added in v1.2.0
func (p *LoadBalancerPoliciesTrigger) Insert(obj interface{}, cache *GatewayCache) bool
Insert adds a LoadBalancerPolicy to the cache and returns true if the target service is routable
type MockCache ¶
type MockCache struct {
// contains filtered or unexported fields
}
MockCache is a mock of Cache interface.
func NewMockCache ¶
func NewMockCache(ctrl *gomock.Controller) *MockCache
NewMockCache creates a new mock instance.
func (*MockCache) EXPECT ¶
func (m *MockCache) EXPECT() *MockCacheMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
type MockCacheMockRecorder ¶
type MockCacheMockRecorder struct {
// contains filtered or unexported fields
}
MockCacheMockRecorder is the mock recorder for MockCache.
func (*MockCacheMockRecorder) BuildConfigs ¶
func (mr *MockCacheMockRecorder) BuildConfigs() *gomock.Call
BuildConfigs indicates an expected call of BuildConfigs.
func (*MockCacheMockRecorder) Delete ¶
func (mr *MockCacheMockRecorder) Delete(arg0 interface{}) *gomock.Call
Delete indicates an expected call of Delete.
func (*MockCacheMockRecorder) Insert ¶
func (mr *MockCacheMockRecorder) Insert(arg0 interface{}) *gomock.Call
Insert indicates an expected call of Insert.
type MockTrigger ¶ added in v1.2.0
type MockTrigger struct {
// contains filtered or unexported fields
}
MockTrigger is a mock of Trigger interface.
func NewMockTrigger ¶ added in v1.2.0
func NewMockTrigger(ctrl *gomock.Controller) *MockTrigger
NewMockTrigger creates a new mock instance.
func (*MockTrigger) Delete ¶ added in v1.2.0
func (m *MockTrigger) Delete(arg0 interface{}, arg1 *GatewayCache) bool
Delete mocks base method.
func (*MockTrigger) EXPECT ¶ added in v1.2.0
func (m *MockTrigger) EXPECT() *MockTriggerMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
func (*MockTrigger) Insert ¶ added in v1.2.0
func (m *MockTrigger) Insert(arg0 interface{}, arg1 *GatewayCache) bool
Insert mocks base method.
type MockTriggerMockRecorder ¶ added in v1.2.0
type MockTriggerMockRecorder struct {
// contains filtered or unexported fields
}
MockTriggerMockRecorder is the mock recorder for MockTrigger.
func (*MockTriggerMockRecorder) Delete ¶ added in v1.2.0
func (mr *MockTriggerMockRecorder) Delete(arg0, arg1 interface{}) *gomock.Call
Delete indicates an expected call of Delete.
func (*MockTriggerMockRecorder) Insert ¶ added in v1.2.0
func (mr *MockTriggerMockRecorder) Insert(arg0, arg1 interface{}) *gomock.Call
Insert indicates an expected call of Insert.
type RateLimitPoliciesTrigger ¶ added in v1.2.0
type RateLimitPoliciesTrigger struct{}
RateLimitPoliciesTrigger is responsible for processing RateLimitPolicy objects
func (*RateLimitPoliciesTrigger) Delete ¶ added in v1.2.0
func (p *RateLimitPoliciesTrigger) Delete(obj interface{}, cache *GatewayCache) bool
Delete removes a RateLimitPolicy from the cache and returns true if the policy was found
func (*RateLimitPoliciesTrigger) Insert ¶ added in v1.2.0
func (p *RateLimitPoliciesTrigger) Insert(obj interface{}, cache *GatewayCache) bool
Insert adds a RateLimitPolicy to the cache and returns true if the target service is routable
type ResourceType ¶ added in v1.2.0
type ResourceType string
ResourceType is the type used to represent the type of resource
const ( // ServicesResourceType is the type used to represent the services resource ServicesResourceType ResourceType = "services" // EndpointSlicesResourceType is the type used to represent the endpoint slices resource EndpointSlicesResourceType ResourceType = "endpointslices" // EndpointsResourceType is the type used to represent the endpoints resource EndpointsResourceType ResourceType = "endpoints" // ServiceImportsResourceType is the type used to represent the service imports resource ServiceImportsResourceType ResourceType = "serviceimports" // SecretsResourceType is the type used to represent the secrets resource SecretsResourceType ResourceType = "secrets" // GatewayClassesResourceType is the type used to represent the gateway classes resource GatewayClassesResourceType ResourceType = "gatewayclasses" // GatewaysResourceType is the type used to represent the gateways resource GatewaysResourceType ResourceType = "gateways" // HTTPRoutesResourceType is the type used to represent the HTTP routes resource HTTPRoutesResourceType ResourceType = "httproutes" // GRPCRoutesResourceType is the type used to represent the gRPC routes resource GRPCRoutesResourceType ResourceType = "grpcroutes" // TCPRoutesResourceType is the type used to represent the TCP routes resource TCPRoutesResourceType ResourceType = "tcproutes" // TLSRoutesResourceType is the type used to represent the TLS routes resource TLSRoutesResourceType ResourceType = "tlsroutes" // UDPRoutesResourceType is the type used to represent the UDP routes resource UDPRoutesResourceType ResourceType = "udproutes" // RateLimitPoliciesResourceType is the type used to represent the rate limit policies resource RateLimitPoliciesResourceType ResourceType = "ratelimits" // SessionStickyPoliciesResourceType is the type used to represent the session sticky policies resource SessionStickyPoliciesResourceType ResourceType = "sessionstickies" // LoadBalancerPoliciesResourceType is the type used to represent the load balancer policies resource LoadBalancerPoliciesResourceType ResourceType = "loadbalancers" // CircuitBreakingPoliciesResourceType is the type used to represent the circuit breaking policies resource CircuitBreakingPoliciesResourceType ResourceType = "circuitbreakings" // AccessControlPoliciesResourceType is the type used to represent the access control policies resource AccessControlPoliciesResourceType ResourceType = "accesscontrols" // HealthCheckPoliciesResourceType is the type used to represent the health check policies resource HealthCheckPoliciesResourceType ResourceType = "healthchecks" // FaultInjectionPoliciesResourceType is the type used to represent the fault injection policies resource FaultInjectionPoliciesResourceType ResourceType = "faultinjections" // UpstreamTLSPoliciesResourceType is the type used to represent the upstream tls policies resource UpstreamTLSPoliciesResourceType ResourceType = "upstreamtls" // RetryPoliciesResourceType is the type used to represent the retry policies resource RetryPoliciesResourceType ResourceType = "retries" // GatewayTLSPoliciesResourceType is the type used to represent the gateway tls policies resource GatewayTLSPoliciesResourceType ResourceType = "gatewaytls" )
type RetryPoliciesTrigger ¶ added in v1.2.0
type RetryPoliciesTrigger struct{}
RetryPoliciesTrigger is responsible for processing TLSRoute objects
func (*RetryPoliciesTrigger) Delete ¶ added in v1.2.0
func (p *RetryPoliciesTrigger) Delete(obj interface{}, cache *GatewayCache) bool
Delete removes a RetryPolicy from the cache and returns true if the policy was found
func (*RetryPoliciesTrigger) Insert ¶ added in v1.2.0
func (p *RetryPoliciesTrigger) Insert(obj interface{}, cache *GatewayCache) bool
Insert adds a RetryPolicy to the cache and returns true if the target service is routable
type SecretTrigger ¶ added in v1.2.0
type SecretTrigger struct{}
SecretTrigger is a processor for Secret objects
func (*SecretTrigger) Delete ¶ added in v1.2.0
func (p *SecretTrigger) Delete(obj interface{}, cache *GatewayCache) bool
Delete removes a Secret object from the cache and returns true if the cache is changed
func (*SecretTrigger) Insert ¶ added in v1.2.0
func (p *SecretTrigger) Insert(obj interface{}, cache *GatewayCache) bool
Insert adds a Secret object to the cache and returns true if the cache is changed
type ServiceImportsTrigger ¶ added in v1.2.0
type ServiceImportsTrigger struct{}
ServiceImportsTrigger is responsible for processing ServiceImport objects
func (*ServiceImportsTrigger) Delete ¶ added in v1.2.0
func (p *ServiceImportsTrigger) Delete(obj interface{}, cache *GatewayCache) bool
Delete removes a ServiceImport from the cache and returns true if the route was found
func (*ServiceImportsTrigger) Insert ¶ added in v1.2.0
func (p *ServiceImportsTrigger) Insert(obj interface{}, cache *GatewayCache) bool
Insert adds a ServiceImport to the cache and returns true if the route is effective
type ServicesTrigger ¶ added in v1.2.0
type ServicesTrigger struct{}
ServicesTrigger is responsible for processing Service objects
func (*ServicesTrigger) Delete ¶ added in v1.2.0
func (p *ServicesTrigger) Delete(obj interface{}, cache *GatewayCache) bool
Delete removes the Service object from the cache and returns true if the cache was modified
func (*ServicesTrigger) Insert ¶ added in v1.2.0
func (p *ServicesTrigger) Insert(obj interface{}, cache *GatewayCache) bool
Insert adds the Service object to the cache and returns true if the cache was modified
type SessionStickyPoliciesTrigger ¶ added in v1.2.0
type SessionStickyPoliciesTrigger struct{}
SessionStickyPoliciesTrigger is responsible for processing TLSRoute objects
func (*SessionStickyPoliciesTrigger) Delete ¶ added in v1.2.0
func (p *SessionStickyPoliciesTrigger) Delete(obj interface{}, cache *GatewayCache) bool
Delete removes a SessionStickyPolicy from the cache and returns true if the policy was found
func (*SessionStickyPoliciesTrigger) Insert ¶ added in v1.2.0
func (p *SessionStickyPoliciesTrigger) Insert(obj interface{}, cache *GatewayCache) bool
Insert adds a SessionStickyPolicy to the cache and returns true if the target service is routable
type TCPRoutesTrigger ¶ added in v1.2.0
type TCPRoutesTrigger struct{}
TCPRoutesTrigger is responsible for processing TCPRoute objects
func (*TCPRoutesTrigger) Delete ¶ added in v1.2.0
func (p *TCPRoutesTrigger) Delete(obj interface{}, cache *GatewayCache) bool
Delete removes a TCPRoute from the cache and returns true if the route was found
func (*TCPRoutesTrigger) Insert ¶ added in v1.2.0
func (p *TCPRoutesTrigger) Insert(obj interface{}, cache *GatewayCache) bool
Insert adds a TCPRoute to the cache and returns true if the route is effective
type TLSRoutesTrigger ¶ added in v1.2.0
type TLSRoutesTrigger struct{}
TLSRoutesTrigger is responsible for processing TLSRoute objects
func (*TLSRoutesTrigger) Delete ¶ added in v1.2.0
func (p *TLSRoutesTrigger) Delete(obj interface{}, cache *GatewayCache) bool
Delete removes a TLSRoute from the cache and returns true if the route was found
func (*TLSRoutesTrigger) Insert ¶ added in v1.2.0
func (p *TLSRoutesTrigger) Insert(obj interface{}, cache *GatewayCache) bool
Insert adds a TLSRoute to the cache and returns true if the route is effective
type Trigger ¶ added in v1.2.0
type Trigger interface { Insert(obj interface{}, cache *GatewayCache) bool Delete(obj interface{}, cache *GatewayCache) bool }
Trigger is the interface for the functionality provided by the resources
type UDPRoutesTrigger ¶ added in v1.2.0
type UDPRoutesTrigger struct{}
UDPRoutesTrigger is responsible for processing UDPRoute objects
func (*UDPRoutesTrigger) Delete ¶ added in v1.2.0
func (p *UDPRoutesTrigger) Delete(obj interface{}, cache *GatewayCache) bool
Delete removes a UDPRoute from the cache and returns true if the route was found
func (*UDPRoutesTrigger) Insert ¶ added in v1.2.0
func (p *UDPRoutesTrigger) Insert(obj interface{}, cache *GatewayCache) bool
Insert adds a UDPRoute to the cache and returns true if the route is effective
type UpstreamTLSPoliciesTrigger ¶ added in v1.2.0
type UpstreamTLSPoliciesTrigger struct{}
UpstreamTLSPoliciesTrigger is responsible for processing TLSRoute objects
func (*UpstreamTLSPoliciesTrigger) Delete ¶ added in v1.2.0
func (p *UpstreamTLSPoliciesTrigger) Delete(obj interface{}, cache *GatewayCache) bool
Delete removes a TLSRoute from the cache and returns true if the route was found
func (*UpstreamTLSPoliciesTrigger) Insert ¶ added in v1.2.0
func (p *UpstreamTLSPoliciesTrigger) Insert(obj interface{}, cache *GatewayCache) bool
Insert adds a TLSRoute to the cache and returns true if the route is effective
Source Files ¶
- accesscontrols_trigger.go
- cache.go
- circuitbreakings_trigger.go
- config.go
- endpoints_trigger.go
- endpointslices_trigger.go
- faultinjection_trigger.go
- gatewayclasses_trigger.go
- gateways_trigger.go
- gatewaytls_trigger.go
- grpcroute.go
- grpcroutes_trigger.go
- healthchecks_trigger.go
- httproute.go
- httproutes_trigger.go
- loadbalancers_trigger.go
- methods.go
- mock_cache_generated.go
- mock_trigger_generated.go
- policies.go
- ratelimits_trigger.go
- retries_trigger.go
- secret_trigger.go
- service_trigger.go
- serviceimports_trigger.go
- sessionstickies_trigger.go
- tcproute.go
- tcproutes_trigger.go
- tlsroute.go
- tlsroutes_trigger.go
- types.go
- udproute.go
- udproutes_trigger.go
- upstreamtls_trigger.go
- utils.go