Documentation
¶
Overview ¶
Package alto implements JSON encoder and decoder for the Application-Layer Traffic Optimization (ALTO) protocol as described in http://tools.ietf.org/html/draft-ietf-alto-protocol.
Encoding at server side:
accepts := req.Header.Get("Accept")
if accepts == "" {
// error handling
}
if !strings.Contains(accepts, alto.MediaTypeDirectory) {
// error handling
}
w.Header().Set("Content-Type", alto.MediaTypeDirectory)
var dir alto.Directory
if err := json.NewEncoder(w).Encode(&dir); err != nil {
// error handling
}
Decoding at client side:
client := &http.Client{}
req, err := http.NewRequest("GET", "http://...", nil)
if err != nil {
// error handling
}
req.Header.Set("Accept", alto.MediaTypeNetworkMap+","+alto.MediaTypeError)
resp, err := client.Do(req)
if err != nil {
// error handling
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
// error handling
}
nmap := alto.NewResource("networkmap")
if err := json.NewDecoder(resp.Body).Decode(nmap); err != nil {
// error handling
}
Index ¶
- Constants
- type CostMap
- type CostType
- type Data
- type Directory
- type DirectoryResource
- type DstCosts
- type Endpoint
- type EndpointAddrGroup
- type EndpointCostMap
- type EndpointDstCosts
- type EndpointProperty
- type EndpointPropertyCapabilities
- type EndpointProps
- type Error
- type FilteredCostMapCapabilities
- type IPEndpoint
- type MACEndpoint
- type Meta
- type NetworkMap
- type ReqEndpointCostMap
- type ReqEndpointProp
- type ReqFilteredCostMap
- type ReqFilteredNetworkMap
- type Resource
Constants ¶
const ( MediaTypeCostMap = "application/alto-costmap+json" // media type for ALTO map service MediaTypeCostMapFilter = "application/alto-costmapfilter+json" // media type for ALTO map filtering service )
const ( MediaTypeEndpointCost = "application/alto-endpointcost+json" // media type for ALTO endpoint cost service MediaTypeEndpointCostParams = "application/alto-endpointcostparams+json" // media type for ALTO endpoint cost service )
const ( MediaTypeEndpointProp = "application/alto-endpointprop+json" // media type for ALTO endpoint property service MediaTypeEndpointPropParams = "application/alto-endpointpropparams+json" // media type for ALTO endpoint property service )
const ( ErrSyntax = "E_SYNTAX" ErrJSONFieldMissing = "E_JSON_FIELD_MISSING" ErrJSONValueType = "E_JSON_VALUE_TYPE" ErrInvalidCostMode = "E_INVALID_COST_MODE" ErrInvalidCostMetric = "E_INVALID_COST_METRCI" ErrInvalidPropertyType = "E_INVALID_PROPERTY_TYPE" )
const ( MediaTypeNetworkMap = "application/alto-networkmap+json" // media type for ALTO map service MediaTypeNetworkMapFilter = "application/alto-networkmapfilter+json" // media type for ALTO map filtering service )
const (
MediaTypeDirectory = "application/alto-directory+json" // media type for ALTO directory service
)
const (
MediaTypeError = "application/alto-error+json" // media type for ALTO error notification
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CostMap ¶
type CostMap struct {
CostType CostType `json:"cost-type"`
VersionTag string `json:"map-vtag"`
Map map[string]DstCosts `json:"map"`
}
A CostMap reprensents a list of path costs for each pair of source/destination provider-defined identifer (PID).
func (*CostMap) MarshalJSON ¶
MarshalJSON implements the MarshalJSON method of json.Marshaler interface.
func (*CostMap) UnmarshalJSON ¶
UnmarshalJSON implements the UnmarshalJSON method of json.Unmarshaler interface.
type CostType ¶
type CostType struct {
CostMetric string `json:"cost-metric"`
CostMode string `json:"cost-mode"`
Description string `json:"description,omitempty"`
}
A CostType represents a combination of cost type and cost mode.
type Data ¶
type Data interface {
// contains filtered or unexported methods
}
A Data represents an information resource data.
type Directory ¶
type Directory struct {
Meta Meta `json:"meta"`
Resources []DirectoryResource `json:"resources"`
}
A Directory represents an information resource directory.
type DirectoryResource ¶
type DirectoryResource struct {
URI string `json:"uri"`
MediaType string `json:"media-type"`
Accepts string `json:"accepts,omitempty"`
Capabilities map[string]interface{} `json:"capabilities,omitempty"`
}
A DirectoryResource represents a list of information resources.
type DstCosts ¶
A DstCosts represents a set of costs for the destination provider-defined identifier (PID).
type Endpoint ¶
An Endpoint represents an endpoint address or address prefix.
func ParseEndpoint ¶
ParseEndpoint parses addr as a network endpoint identifier with address type typ. Known types are "ipv4" and "ipv6".
type EndpointAddrGroup ¶
An EndpointAddrGroup represents a set of endpoints.
func (EndpointAddrGroup) MarshalJSON ¶
func (eag EndpointAddrGroup) MarshalJSON() ([]byte, error)
MarshalJSON implements the MarshalJSON method of json.Marshaler interface.
func (EndpointAddrGroup) UnmarshalJSON ¶
func (eag EndpointAddrGroup) UnmarshalJSON(b []byte) error
UnmarshalJSON implements the UnmarshalJSON method of json.Unmarshaler interface.
type EndpointCostMap ¶
type EndpointCostMap struct {
CostType CostType `json:"cost-type"`
Map map[string]EndpointDstCosts `json:"map"`
}
An EndpointCostMap reprensents a list of endpoint cost maps.
type EndpointDstCosts ¶
type EndpointDstCosts map[string]interface{}
An EndpointDstCosts represents a set of endpoint cost maps.
type EndpointProperty ¶
type EndpointProperty struct {
VersionTag string `json:"map-vtag"`
Map map[string]EndpointProps `json:"map"`
}
An EndpointProperty represents a list of endpoint properties.
type EndpointPropertyCapabilities ¶
type EndpointPropertyCapabilities struct {
PropTypes []string `json:"prop-types"`
}
An EndpointPropertyCapabilities reprensents a capabilities of endpoint property.
type EndpointProps ¶
type EndpointProps map[string]interface{}
An EndpointProps represents a set of endpoint properties.
type Error ¶
type Error struct {
Code string `json:"code"`
}
An Error represents an error notification.
type FilteredCostMapCapabilities ¶
type FilteredCostMapCapabilities struct {
CostTypeNames []string `json:"cost-type-names"`
CostConstraints bool `json:"cost-constraints"`
}
A FilteredCostMapCapabilities represents a capabilities for the filtered cost map.
type IPEndpoint ¶
An IPEndpoint represents an IP address or address prefix.
func (*IPEndpoint) Network ¶
func (ep *IPEndpoint) Network() string
Network returns the endpoint's network; "ipv4" or "ipv6".
func (*IPEndpoint) String ¶
func (ep *IPEndpoint) String() string
func (*IPEndpoint) TypedString ¶
func (ep *IPEndpoint) TypedString() string
TypedString returns the literal endpoint address with network prefix followed by a colon.
type MACEndpoint ¶
type MACEndpoint net.HardwareAddr
A MACEndpoint represents a MAC address. Note that this address type is not defined in the ALTO protocol.
func (MACEndpoint) Network ¶
func (ep MACEndpoint) Network() string
Network returns the endpoint's network; "mac-48" or "mac-64".
func (MACEndpoint) String ¶
func (ep MACEndpoint) String() string
func (MACEndpoint) TypedString ¶
func (ep MACEndpoint) TypedString() string
TypedString returns the literal endpoint address with network prefix followed by a colon.
type Meta ¶
type Meta map[string]interface{}
A Meta represents a set of definitions related with the information resources.
type NetworkMap ¶
type NetworkMap struct {
VersionTag string `json:"map-vtag"`
Map map[string]EndpointAddrGroup `json:"map"`
}
A NetworkMap represents a list of network locations within the provider-defined identifier (PID).
func (*NetworkMap) Endpoints ¶
func (nm *NetworkMap) Endpoints(pid, typ string) []Endpoint
Endpoints returns a list of endpoints which selected with provider-defined identifier (PID) name pid and address type typ. The zero value for string is treated as wildcard.
func (*NetworkMap) MarshalJSON ¶
func (nm *NetworkMap) MarshalJSON() ([]byte, error)
MarshalJSON implements the MarshalJSON method of json.Marshaler interface.
func (*NetworkMap) Set ¶
func (nm *NetworkMap) Set(pid string, ep Endpoint)
Set sets the provider-defined identifier (PID) pid to endpoiint ep. It replaces any existing endpoints.
func (*NetworkMap) UnmarshalJSON ¶
func (nm *NetworkMap) UnmarshalJSON(b []byte) error
UnmarshalJSON implements the UnmarshalJSON method of json.Unmarshaler interface.
type ReqEndpointCostMap ¶
type ReqEndpointCostMap struct {
CostType CostType `json:"cost-type"`
Constraints []string `json:"constraints,omitempty"`
Endpoints struct {
Srcs []Endpoint `json:"srcs,omitempty"`
Dsts []Endpoint `json:"dsts,omitempty"`
} `json:"endpoints"`
}
A ReqEndpointCostMap represents input parameters for the filtered cost map.
type ReqEndpointProp ¶
type ReqEndpointProp struct {
Properties []string `json:"properties"`
Endpoints []Endpoint `json:"endpoints"`
}
A ReqEndpointProp represents input parameters for the filtered endpoint properties.
type ReqFilteredCostMap ¶
type ReqFilteredCostMap struct {
CostType CostType `json:"cost-type"`
Constraints []string `json:"constraints,omitempty"`
PIDs struct {
Srcs []string `json:"srcs,omitempty"`
Dsts []string `json:"dsts,omitempty"`
} `json:"pids,omitempty"`
}
A ReqFilteredCostMap represents input parameters for the filtered cost map.
type ReqFilteredNetworkMap ¶
type ReqFilteredNetworkMap struct {
PIDs []string `json:"pids,omitempty"`
AddrTypes []string `json:"address-types,omitempty"`
}
A ReqFilteredNetworkMap represents input parameters for the filtered network map.
type Resource ¶
A Resource represents an information resource.
func NewResource ¶
NewResource returns an information resource. Known information resource types are "networkmap" and "costmap".

